【发布时间】:2020-01-04 09:09:35
【问题描述】:
假设在 React 功能组件中有一个名为 currentSelected 的独立于 UI 的状态。它存储当前选择的项目,并将在某个时间使用。
有两种存储状态的方法,useRef hook 或模块范围外的组件。
useRef 挂钩:
function Example() {
const currentSelected = useRef()
useEffect(() => {
// access currentSelected state
})
function handleClick(item) {
currentSelected.current = item
}
return (
<ul>
{items.map(item => <li onClick={() => handleClick(item)}>item.name</li>)}
</ul>
)
}
模块范围:
let currentSelected = null
function Example() {
useEffect(() => {
// access currentSelected state
})
function handleClick(item) {
currentSelected = item
}
return (
<ul>
{items.map(item => <li onClick={() => handleClick(item)}>item.name</li>)}
</ul>
)
}
哪种方法更适合存储像currentSelected这样的独立于UI的状态?
而useRef和模块作用域在存储状态方面的应用场景是什么?
========= 更新===========
UI 独立意味着您不想在更新状态后触发重新渲染。相比之下,与 UI 相关的状态就是这样做的。
【问题讨论】:
标签: javascript reactjs ecmascript-6 react-hooks