Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React钩子将更新程序传递给`(state,props)`作为更新状态的参数的`setState`的等效方法是什么?_Reactjs_React Hooks - Fatal编程技术网

Reactjs 使用React钩子将更新程序传递给`(state,props)`作为更新状态的参数的`setState`的等效方法是什么?

Reactjs 使用React钩子将更新程序传递给`(state,props)`作为更新状态的参数的`setState`的等效方法是什么?,reactjs,react-hooks,Reactjs,React Hooks,替换React.Component中的setState函数的最佳做法是什么-- setState(更新程序,[回调]) 更新程序具有签名的位置 (状态、道具)=>状态更改 (因此,新状态取决于以前的状态和道具) --用鱼钩 当我搜索useStatehook的API时 功能更新 如果使用以前的状态计算新状态,则可以传递 函数设置状态。函数将接收上一个值, 并返回更新后的值。下面是一个计数器组件的示例 使用两种形式的setState: 函数计数器({initialCount}){ const[

替换React.Component中的
setState
函数的最佳做法是什么--

setState(更新程序,[回调])
更新程序具有签名的位置

(状态、道具)=>状态更改
(因此,新状态取决于以前的状态和道具)

--用鱼钩

当我搜索
useState
hook的API时

功能更新 如果使用以前的状态计算新状态,则可以传递 函数设置状态。函数将接收上一个值, 并返回更新后的值。下面是一个计数器组件的示例 使用两种形式的setState:

函数计数器({initialCount}){
const[count,setCount]=useState(initialCount);
返回(
计数:{Count}
setCount(initialCount)}>重置
setCount(prevCount=>prevCount-1)}>-
setCount(prevCount=>prevCount+1)}>+
);
}
更新状态的函数,
setCount
,不接受props作为参数

最佳实践是使用
useffect
hook,并将道具作为依赖项吗


有人能解释一下为什么在React钩子中会将其分开吗?

简言之,是的,使用
setCount(count+1)
是完全安全的,这是设置功能组件状态的通常做法


如果您正在寻找回调模式,我相信这另一个将更适合回答您的问题,因为他们正在为此目的使用
useffect
钩子。

简而言之,是的,使用
setCount(count+1)
是完全安全的,这是设置功能组件状态的通常做法


如果您正在寻找回调模式,我相信这另一个将更适合回答您的问题,因为他们正利用
useffect
hook实现这一目的。

Hooks常见问题解答中有一节介绍了。虽然它首先说,一般来说,您可能不需要从props派生状态,但它接着给出了一个通过闭包引用props的示例,即直接引用它们

因此,我认为直接引用prop和set state函数参数的组合应该有效,如:

导出默认函数Conuter({incrementBy}){
const[count,setCount]=useState(0)
返回(
计数:{Count}
setCount(prevCount=>prevCount+incrementBy)}>
递增计数
setCount(0)}>重置
);
}

活生生的例子。

Hooks常见问题解答中有一节介绍。虽然它首先说,一般来说,您可能不需要从props派生状态,但它接着给出了一个通过闭包引用props的示例,即直接引用它们

因此,我认为直接引用prop和set state函数参数的组合应该有效,如:

导出默认函数Conuter({incrementBy}){
const[count,setCount]=useState(0)
返回(
计数:{Count}
setCount(prevCount=>prevCount+incrementBy)}>
递增计数
setCount(0)}>重置
);
}

活生生的例子。

我想你没有抓住我问题的重点。我所质疑的用法不仅是基于以前的状态值,而且还基于props中的值来更新状态。@jazzinpark ah。。好的,我现在明白你的问题了。你还能做这样的事吗
setCount(count+props.count)
?这不是一种反模式吗,原因与中所述类似?不过我不确定。我想应该没问题,因为count是一个基本类型,对吗<代码>编号?我怀疑会有什么奇怪的变异我想你有点误解了我的问题。我所质疑的用法不仅是基于以前的状态值,而且还基于props中的值来更新状态。@jazzinpark ah。。好的,我现在明白你的问题了。你还能做这样的事吗
setCount(count+props.count)
?这不是一种反模式吗,原因与中所述类似?不过我不确定。我想应该没问题,因为count是一个基本类型,对吗<代码>编号?我怀疑会有任何奇怪的变异
function Counter({initialCount}) {
  const [count, setCount] = useState(initialCount);
  return (
    <>
      Count: {count}
      <button onClick={() => setCount(initialCount)}>Reset</button>
      <button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
      <button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
    </>
  );
}