其实用hooks已经半年多了,遇到了很多问题,每次解决完就忘记了,也没有记录,刚刚又遇到一个问题,总觉得以前见过,但就想不起来当时如何解决的,突然醒悟,还是要记录一下,以便以后查看。如果能帮助更多人就更好了。
tips: 我是慢慢的写的,因为也没啥时间专门写这个,就遇到问题了先快速记一下,后面有时间了再慢慢补充原理吧。
一步一步慢慢来吧。
UseState
1. 更改数组时,页面不重新渲染
- 问题描述:声明了一个数组simpleRules, 数据结构如下, 页面中渲染这个simpleRules中的数据展示在页面,当我更改simpleRules数据时,正常页面应该跟着变化的。代码操作如下。但是页面却没有变化,但是在handle方法中打印出来的,simpleRules数据是被更改了的。
const [simpleRules, setSimpleRules] = useState([
{
ruleId: 1,
conditions: [
{
text: '条件1',
id: '1'
}
]
}
]);
const handleChangeConditions = useCallback(() => {
simpleRules[0].conditions.push({text: '条件2', id: '2'});
setSimpleRules(simpleRules);
}, [simpleRules]);
先说解决方案:直接暴力深拷呗
setSimpleRules(_.cloneDeep(simpleRules));