reactjs - react Hook : how to avoid re-rendering of component on another state change?

标签 reactjs react-hooks use-state

这是我的代码。

const test = () => {
    const [state, setState] = useState(0)
    const clickOne = () => setState(1)
    const clickTwo = () => setState(2)

    return (
        <>
        <div className="title">
            <h1>Title</h1>
        </div>
        <div className="buttons">
            <button onClick={clickOne}>1</button>
            <button onClick={clickTwo}>2</button>
        </div>
        <div className="content">
            {state === 0 ? <div>click!</div> : state === 1 ? <div>1</div> : <div> 2 </div>}
        </div>
        </>
    )
}

我在这里尝试的是<button> 时重新渲染“#buttons”区域和“#content”区域单击“#buttons”区域。

到目前为止,每次单击按钮时都会重新渲染“#title”区域。 如何强制“#title”区域不重新渲染?谢谢。

最佳答案

使用不同的组件和React.memo

const Header = React.memo(() => {
  return (<div className="title">
        <h1>Title</h1>
    </div>)
});

const test = () => {
const [state, setState] = useState(0)
const clickOne = () => setState(1)
const clickTwo = () => setState(2)

return (
    <>
    <Header/>
    <div className="buttons">
        <button onClick={clickOne}>1</button>
        <button onClick={clickTwo}>2</button>
    </div>
    <div className="content">
        {state === 0 ? <div>click!</div> : state === 1 ? <div>1</div> : <div> 2 </div>}
    </div>
    </>
)
}

来自文档:

If your component renders the same result given the same props, you can wrap it in a call to React.memo for a performance boost in some cases by memoizing the result.

但请注意,您不能使用它来依赖渲染预防,而只是优化

关于reactjs - react Hook : how to avoid re-rendering of component on another state change?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68905784/

相关文章:

javascript - React Native 中组件之间的通信(子 -> 父)

reactjs - 计数器基于条件的 setState

ios - 打印 : Entry, ":CFBundleIdentifier", 不存在

Reactjs 输入值没有改变

reactjs - React TS变量没有及时更新

javascript - 展开和折叠后保持状态 |导致 React 状态更新错误

reactjs - 我可以使用箭头函数代替 React Hooks 的普通函数吗?

javascript - 避免在 React 中只更新一个组件时重新渲染列表中的每个组件

reactjs - typescript 和响应文件上传(打字)

reactjs - 从 for 循环中的多个连续异步调用调用多个 `setState` Hook