【发布时间】:2020-09-21 01:33:46
【问题描述】:
我在我的反应函数组件中使用了板条箱状态
console.log('reset');
const [val, setVal] = useState(props.data.bulk_notification.overdue_notification.active);
const [state, setState] = useState({
isOverdueActive: props.data.bulk_notification.overdue_notification.active,
isUpcomingActive: props.data.bulk_notification.upcoming_notification.active,
});
console.log(state);
console.log('val', val);
state 是我想要访问事物的方式,而 val 是我发现的唯一工作方式。
加载组件后我看到
reset
Object { isOverdueActive: false, isUpcomingActive: false }
val false
这些值已按照 props 的预期设置。然后在使用 onClick 事件更改状态后,我看到了
reset
Object { isOverdueActive: true, isUpcomingActive: false }
val true
reset
Object { isOverdueActive: false, isUpcomingActive: false }
val true
设置onClick状态的代码是
setState({ ...state, isOverdueActive: !notification.active });
setVal(!notification.active);
似乎只有简单的布尔状态会在组件重新渲染中保持不变,而使用传递的道具重置对象。对象有一些特殊的行为吗?对象是否应该在带有反应钩子的状态下使用?
【问题讨论】:
-
要回答这个问题,不,对象没有特殊行为,您可以在状态挂钩中使用它们。您在
onClick中还有什么其他用途吗?您在该函数中指的notification是什么?认为我们需要更多上下文和相关代码 -
发布您的完整组件代码。
标签: javascript reactjs