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