我有一个反应状态
const fs = require('fs');
module.exports= (client, Discord) =>{
const load_dir = (dirs) =>{
const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js'));
for (const file of event_files){
const event = require(`../events/${dirs}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}
我有一个 useEffect 对状态更新执行某些操作
const [newState, setNewState] = useState({a:1, b:2})
现在如果状态更新如下
useEffect(() => {
console.log(newState)
....
....
},[newState])
它不会导致按预期重新渲染,因为值没有更新。但是,如果按照以下方式更新状态,则会重新渲染
setNewState(prevState => ({...prevState, b:2})
即使状态值保持不变。此更新导致重新渲染。我不确定为什么会这样。如果我想以第二种方式更新状态,我也想知道如何停止重新渲染。