相关疑难解决方法(0)

使用useEffect,如何跳过对初始渲染应用效果?

使用React的新效果钩子,如果重新渲染之间某些值没有改变,我可以告诉React跳过应用效果 - 来自React的文档示例:

useEffect(() => {
  document.title = `You clicked ${count} times`;
}, [count]); // Only re-run the effect if count changes
Run Code Online (Sandbox Code Playgroud)

但是上面的例子应用了初始渲染时的效果,以及后续重新渲染的位置count.如何告诉React跳过初始渲染的效果?

reactjs react-hooks

28
推荐指数
7
解决办法
1万
查看次数

React 如何实现 hooks 使其依赖调用顺序

React Hooks useState可以将本地状态附加到无状态功能组件,例如

const [name, setName] = useState('tom')
const [age, setAge] = useState(25)
Run Code Online (Sandbox Code Playgroud)

我想知道执行上面两行后本地状态对象树是什么样子的? 钩子规则说明了如何处理状态

React 依赖于调用 Hook 的顺序

或者本地状态根本不是对象树,只是一个数组?

提前致谢!

reactjs react-hooks

3
推荐指数
1
解决办法
2641
查看次数

使用基于 props 更新的状态来反应 useState

我有一个功能性的 React 组件,大致如下所示:

const MyComponent = (prop1) => {
  
  const [myState, setState] = useState(prop1)  

  return <>
    {myState && <div>Some text...</div>}
    <div onClick={() => setState(true)}>Click me</div>
  </>
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为 React 只计算一次初始状态部分,因此myState不会在prop1更改时更新。

有没有办法在不使用的情况下完成这项工作useReducer?这是一个很好的用例吗useEffect

javascript frontend reactjs react-hooks use-state

3
推荐指数
1
解决办法
3629
查看次数

当从 props 更新状态时,为什么 useEffect() 而不是直接在组件中检查?

当 props 改变时更新状态时,常用 方法useEffect()是将 props 作为依赖项使用:

const Component = ({prop}) => {
  const [state, setState] = useState(prop);

  useEffect(() => {
    setState(prop);
  }, [prop]);

  return <div>{state}</div>;
}
Run Code Online (Sandbox Code Playgroud)

我想知道,与直接在组件本身中进行比较相比,这是否有优势,如下所示:

const Component = ({prop}) => {
  const [state, setState] = useState(prop);

  if (prop !== state) {
    setState(prop);
  }

  return <div>{state}</div>;
}
Run Code Online (Sandbox Code Playgroud)

看起来这两种方法都会导致组件执行两次——一次 prop 和状态不同步,一次同步——但第二种方法看起来避免了向堆栈添加钩子。它看起来也可以在 DOM 协调之外进行优化,因为它不必像 useEffect() 那样等待 DOM 生成。我什至不确定它是否比“The Hooks Way”更容易阅读。

有谁知道为什么 useEffect() 路线比内联检查更好?

reactjs

2
推荐指数
1
解决办法
4271
查看次数

标签 统计

reactjs ×4

react-hooks ×3

frontend ×1

javascript ×1

use-state ×1