如何解决组件是否保持旧状态?
我有一个带有自定义按钮作为道具的自定义模式。
const [selection,setSelection] = useState(null)
const onSelect = (item) => {
setSelection(item);
Gui.PickOption({
message: 'choose an action',buttons: BUTTONS,onPress,});
};
BUTTONS = [{buttonText:'print selection',onPress:()=> console.log(selection)}]
这里的问题是,当用户按下按钮时,日志将为NULL,因为似乎模态具有“选择”更新之前的状态。为什么不更新?如何使按钮跟上状态变化? (请记住,上面的代码是我当前面临的问题的一个小示例),本质上,我希望onPress始终以最“当前”状态执行设置的“任务”。 )
解决方法
问题是您在setState之后使用了选择值。我猜您可以使用useEffect
来侦听选择值并在其中执行您的逻辑,例如:
const [selection,setSelection] = useState(null);
const onSelect = (item) => {
setSelection(item);
};
useEffect(() => {
Gui.PickOption({
message: "choose an action",buttons: BUTTONS,onPress,});
},[selection]);
设置状态(此处为setSelections)时,组件将使用新值重新渲染,但是在onSelect
按钮的功能中,您仍将使用旧值运行(直到下次使用,即下一次渲染)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。