【发布时间】:2021-08-26 03:15:27
【问题描述】:
我正在阅读很棒的博客,发现一些我不太清楚的地方。 https://kentcdodds.com/blog/optimize-react-re-renders 这是我无法理解的代码 sn-p。
https://codesandbox.io/s/react-performance-1-fast-sgz8f?file=/src/index.js
import * as React from 'react'
import ReactDOM from 'react-dom'
function Logger(props) {
console.log(`${props.label} rendered`)
return null // what is returned here is irrelevant...
}
function Counter(props) {
const [count, setCount] = React.useState(0)
const increment = () => setCount(c => c + 1)
return (
<div>
<button onClick={increment}>The count is {count}</button>
{props.logger}
</div>
)
}
ReactDOM.render(
<Counter logger={<Logger label="counter" />} />,
document.getElementById('root'),
)
我的问题是为什么每次我们更新计数状态时 Logger 组件都不会呈现? 这种方式如何防止 logger 功能组件更改其 props 对象? 为什么我们不在 Counter 组件的每个渲染上都创建新的 Logger props 对象?
感谢您的帮助!
【问题讨论】:
标签: reactjs