[React] Using key prop to reset component to avoid useEffect hook

The component using useEffect which is not necessary:

function TopicEditor({ selectedTopicId }) {
    const [enteredNote, setEnteredNote] = useState('');
    const selectedTopic = DUMMY_TOPICS.find(topic => topic.id === selectedTopicId)
    
    useEffect(() => {
         if (selectedTopic) {
             setEnteredNOte(selectedTopic.note)
         }
    }, [selectedTopic]);
    
    return (
      ....
    )
}

function App() {
    const [selectedTopicId, setSelectedTopicId] = useState();
    return (
        <TopicEditor selectedTopicId={selectedTopicId} />
    )
}

 

The way we can get rid of useEffect from the TopicEditor component is passing a key prop to it, so everytime when key changes, the TopicEditor component will be reset.

function App() {
    const [selectedTopicId, setSelectedTopicId] = useState();
    return (
        <TopicEditor key={selectedTopicId} selectedTopicId={selectedTopicId} />
    )
}

 

function TopicEditor({ selectedTopicId }) {
    const selectedTopic = DUMMY_TOPICS.find(topic => topic.id === selectedTopicId)    
    const [enteredNote, setEnteredNote] = useState(selectedTopic?.note);

    // useEffect(() => {
    //     if (selectedTopic) {
    //         setEnteredNOte(selectedTopic.note)
    //     }
    // }, [selectedTopic]);
    
    return (
      ....
    )
}

 

posted @   Zhentiw  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-04-08 [Tools] Kill the process running on port 8080
2020-04-08 [RxJS] Encapsulate complex imperative logic in a simple observable
2020-04-08 [RxJS] Remember previous value by using pairwise operator
2019-04-08 [Functional Programming] Build a Query function by using Crocks (Pred, Pair, Maybe)
2018-04-08 [Angular] ngx-formly (AKA angular-formly for Angular latest version)
2018-04-08 [React Router] Create a ProtectedRoute Component in React Router (setState callback to force update)
2017-04-08 [SCSS] Organize SCSS into Multiple Files with Partials
点击右上角即可分享
微信分享提示