我正在try 确定客户是否有活动订阅.为此,我使用以下代码:

const stripe = require('stripe')('some-api-key');

export default function Example(){
    // the user will automatically be considered non-subbed by default
    const [isSubscriber, setIsSubscriber] = useState(false)


    // grab the customer id from stripe
    async function get_customer_id() {

        const customers = await stripe.customers.search({
            query: `metadata[\'some-meta-data-key\']:\'some-meta-data-value\'`
        });
        return customers.data[0]['id']
    }


    // grab the list of active subscriptions from stripe
    async function customer_is_subscriber(){
        const subs = await stripe.subscriptions.list({
            status: 'active',
        });
        return subs
    }


    // determine if the customer id is in the list of active subscriptions. 
    // return true if so, false otherwise
    async function test_equality(){
        const customer_id = await get_customer_id();
        const subbed = await customer_is_subscriber();

        const answer = subbed.find(sub => sub.customer === customer_id)
        return !!answer;
        
    }


    useEffect( () => {
        async function load_result() {
            const promise_function_return = await test_equality()
            setIsSubscriber(promise_function_return)
        }
        load_result();
}, [isSubscriber]);


return (

// some react code

)

}


我已经能够成功地获得我的所有其他功能,其中我正在对用户是否是订阅者进行比较,但我遇到的问题是更新状态值(例如,如果是子床,则为true,否则为false).

我发现了一些关于这个特定主题的好问题,比如:

这里:setState inside Promise in React

这里是:setState inside a Promise function in a useEffect with hooks?

但我就是没能让它正常工作.这是我目前最接近解决这个问题的一次.

推荐答案

目前你的代码说,当isSubscriber改变时,它应该判断用户是否是订户,并更新isSubscriber状态...所以这是一个鸡和蛋的问题.直到isSubscriber被设定,它才会设定isSubscriber.

我认为您希望将}, [isSubscriber]);更改为}, []);,以便在组件首次加载时执行代码(而不是在isSubscriber更改时).

Javascript相关问答推荐

Math.random超出了最大调用堆栈

JavaScript代理不适用于打开的窗口对象

在JavaScript中逐一播放随机生成的音频文件数组

如何从defineExpose访问数据和方法

事件错误:类型错误:无法读取未定义的属性(读取stopPropagation)

我不明白这个react 组件有什么问题

调用SEARCH函数后,程序不会结束

如何使用React渲染器放置根dis?

Flisk和JS错误:未捕获的Syntax错误:意外的令牌'<'

我不知道为什么我的JavaScript没有验证我的表单

如何分配类型脚本中具有不同/额外参数的函数类型

django无法解析余数:[0] from carray[0]'

React Code不在装载上渲染数据,但在渲染上工作

编剧如何获得一个div内的所有链接,然后判断每个链接是否都会得到200?

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

JavaScript是否有多个`unfined`?

为什么可选参数的顺序会导致问题?

ReferenceError:无法在初始化之前访问setData

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

在高位图中显示每个y轴系列的多个值