【问题标题】:How to call function after setState updated(callback)setState 更新后如何调用函数(回调)
【发布时间】:2020-10-01 02:43:38
【问题描述】:

我想在 setVote 之前设置投票,然后运行 ​​sendVote。但是无论如何,它首先运行 sendVote。我该如何解决?我使用 React Hook ......所以很难。请帮我!!!非常感谢。

    <TouchableOpacity onPress={() => {setVoting(!voting); setVote(voting?vote-1:vote+1); sendVote();}}>
       <Ionicons 
        name= {voting?'md-star':'md-star-outline'}
        size={24} 
        color={'#aa4fff'} 
       />
    </TouchableOpacity>

【问题讨论】:

    标签: react-native asynchronous promise callback hook


    【解决方案1】:

    尝试以下方法:

    useEffect(()=>{
       setVote(voting?vote-1:vote+1);
    },[voting]);
    
    useEffect(()=>{
       sendVote();
    },[vote]);
    

    ...然后从 onPress 中删除 setVote 和 sendVote:

    <TouchableOpacity onPress={() => setVoting(!voting)}>
           <Ionicons 
            name= {voting?'md-star':'md-star-outline'}
            size={24} 
            color={'#aa4fff'} 
           />
    </TouchableOpacity>
    

    【讨论】:

    • setVote(voting?vote-a:vote+1); 应该是setVote(voting?vote-1:vote+1);,注意a
    • 非常感谢!!!但是如果我返回屏幕,投票会减少,因为 const [voting, setVoting] = React.useState(false);那么如何保存投票状态呢?
    • 谢谢。修正了错字。对于这个问题,您需要跟踪父组件中的变量,将其传递给该组件,然后在 useState 调用中使用它,而不是将其设置为 false。
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2022-12-09
    • 2018-09-20
    • 1970-01-01
    • 2020-09-25
    • 2022-12-03
    相关资源
    最近更新 更多