javascript - 根据另一个状态道具的 Onchange 更改组件状态道具
问题描述
我有一个状态道具,它会根据用户输入的输入值(数量)而变化(称之为 firstState.a)。我的问题是如何根据输入的值更改另一个 state prop(fee, secondState.b)。我想我可以通过让 firstState.a 成为在 useEffect 发生变化时触发 useEffect 的依赖项,从而有条件地在 UseEffect 中设置 secondState 的状态。我不明白什么。
伪代码
useEffect(()=>{
if(...) {
setSecondState(secondstate.b)
} else {
setSecondState(secondstate.b)
}
}, [firstState.a])
解决方案
让我们想象一下你有两种不同的状态:
const [stateA, setStateA] = useState('');
const [stateB, setStateB] = useState('');
挂载后运行的第一个效果,让我们触发stateA
更改(理想情况下并非如此,但出于示例目的将其留在这里 - 也许它来自 API 调用,这可能会在用户onchange
事件(例如输入字段)上触发):
useEffect(() => {
setStateA('value');
}, []);
一旦stateA
基于依赖数组及其值发生更改,您可以setStateB
使用首选值调用第二个效果:
useEffect(() => {
if (stateA === 'value') {
setStateB('first condition applied');
} else {
setStateB('second condition applied');
}
}, [stateA]);
功能组件主体的完整示例:
const [stateA, setStateA] = useState('');
const [stateB, setStateB] = useState('');
useEffect(() => {
setStateA('value');
}, []);
useEffect(() => {
if (stateA === 'value') {
setStateB('first condition applied');
} else {
setStateB('second condition applied');
}
}, [stateA]);
在Using the Effect Hook的文档中有很好的进一步解释。
推荐阅读
- c - 从堆栈声明开始时我们如何使用堆?
- sql - 使用JOIN时如何仅在特定范围内选择?
- wpf - WPF:双向绑定不会更新回来
- python - Python 官方 Stripe 客户端创建两个客户
- c# - 有什么方法可以使用 .netstandard2.0 或 .netstandard3.0 将 .NETFramework 4.7.1 nuget 安装到项目中
- python - 为什么该插槽被调用两次?
- python - 为什么 pip 安装会抛出这个错误?
- docusaurus - 将 Docusaurus 用于商业项目
- c - 如何计算C中两个移位波信号之间的相移
- javascript - 在循环中访问动态添加的属性