如何在不更新状态值的情况下停止 React 重新渲染?

时间:2021-07-28 04:43:28

标签: reactjs react-hooks rendering

我有一个反应状态

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}) 

即使状态值保持不变。此更新导致重新渲染。我不确定为什么会这样。如果我想以第二种方式更新状态,我也想知道如何停止重新渲染。

0 个答案:

没有答案