为何需用&&操作符检查React useState Hook的状态数据?
为什么删除
people &&会触发"Cannot read properties of null (reading 'map')"错误? 这不是useState Hook的特性,核心原因是组件渲染时机和初始状态的冲突:
- 你给
people设置的初始值是null,组件第一次渲染时,useEffect里的异步请求还没完成,setPeople还没更新状态,此时people就是null。而null没有map方法,直接调用people.map()自然会报错。 people &&是JavaScript的短路求值逻辑:当people为null(假值)时,&&左边判定为假,整个表达式会直接返回null,不会执行后面的map方法,从而避免报错。等到异步请求完成,setPeople(data)把people更新为数组(真值),&&才会继续执行后面的map,渲染列表内容。
另外给你个小优化方案:可以把people的初始值设为空数组[],这样即使第一次渲染,people.map()也能正常调用(空数组的map不会产生任何元素),就不需要额外加people &&的判断了:
const [people, setPeople] = useState([])
内容的提问来源于stack exchange,提问作者sllmn
相关产品推荐
相关产品推荐

