Reactjs 为什么我必须在React中通过useffect钩子更新内部状态?

Reactjs 为什么我必须在React中通过useffect钩子更新内部状态?,reactjs,react-hooks,Reactjs,React Hooks,也许我对react flow的理解有误,但有人能解释一下这个魔法吗:) 为什么我必须在React中通过useffect钩子更新内部状态 我认为组件更新将触发重写useState钩子的初始状态 const [list, setList] = useState<TabItem[]>(tabs); useEffect(() => { setList(tabs); }, [tabs]); const[list,setList]=useState(制表符); u

也许我对react flow的理解有误,但有人能解释一下这个魔法吗:)

为什么我必须在React中通过useffect钩子更新内部状态

我认为组件更新将触发重写useState钩子的初始状态

  const [list, setList] = useState<TabItem[]>(tabs);

  useEffect(() => {
    setList(tabs);
  }, [tabs]);

const[list,setList]=useState(制表符);
useffect(()=>{
设置列表(选项卡);
},[tabs]);

问题是,当React重新呈现功能组件时,state hook
React.useState(tabs)
不会再次执行

这就是为什么上一个状态在下一个渲染周期中保持不变

因此,为了让您的道具进入您的内部状态,您可以在
React.useffect()钩子中提供
tabs
道具,以便useffect回调将再次运行,并使用
setList(tabs)

再次设置状态什么是“内部状态”?当状态被实例化时,初始状态只被引用一次,与其他所有状态分开。本例中的
useffect
将在实例化状态并呈现组件之后运行,您不需要
useffect
钩子来更新状态,您可以在任何地方调用状态更新程序。你的问题不是很清楚。也许您可以包含一个更全面的代码示例?