我目前在react native中有一个函数,它执行以下操作:
resetThenSet = (id, arrayId, title) => {
if(arrayId != 'selectProduct') {
// Setting state for each selected dropdown in selectedDropdowns
this.setState({
dataShowingToggle: true,
selectedDropdowns: {...this.state.selectedDropdowns, [arrayId]: title}
}, this.getProductCost(arrayId, id)
);
}
我运行上述命令,可以确认arrayId和title变量有效并包含数据。arrayId也不是“selectProduct”。我在调试时在那里添加了一个console.log,以确保它运行,事实上确实如此。我期望的行为是状态立即更新。
但是,所选下拉列表的状态不会更新。在this.setState更新之后添加:console.log(this.state)时,没有任何更改。如果我运行该函数两次,它将在第二次运行时更新。
为了进一步测试它,我添加了这样的静态输入:
this.setState({
dataShowingToggle: true,
selectedDropdowns: {...this.state.selectedDropdowns, testField: 'me here'}
}, this.getProductCost(arrayId, id)
);
console.log(this.state);
它仅在第一次运行后更新状态。我错过什么了吗?
更新:我更新了代码,以在调用回setstate时运行console.log:
if(arrayId != 'selectProduct') {
// Setting state for each selected dropdown in selectedDropdowns
console.log(arrayId + title);
console.log('i run');
this.setState({
dataShowingToggle: true,
selectedDropdowns: {...this.state.selectedDropdowns, [arrayId]: title}
}, console.log(this.state)
);
};
console.logarrayId标题的是“定量产品25”console.log(我运行),然后这个状态不显示定量产品25
setState
是异步的。这就是函数调用具有可选回调的原因。
我想你可能还有其他问题。
调用setState
时,请尝试将控制台日志放入回调函数中,以查看状态何时用您提供的值更新。
我正在使用React-useState创建状态为的对象。在成功调用API后,将更新为数据对象。 我有一个表单可以更改此状态,但我还有一个取消按钮。单击“取消”时,如何将此状态恢复为其初始值(API调用后)? 我应该创建另一个状态变量和存储初始状态在那里,然后更新我的状态基于?
问题内容: 因此,我正在尝试为从服务器获取数据的编辑组件设置初始状态,现在应该可以在组件状态下对其进行编辑。但是当我尝试这样做时: 因为这是在渲染中,所以我陷入了无限循环。我不应该将组件状态与查询组件一起使用吗?如果没有,那还有什么选择呢? 问题答案: 无论哪个组件需要此数据作为状态,都应在组件内部进行渲染,然后将数据作为道具传递给它。例如:
我在一个三元组中使用了< code>this.setState(),并试图找出它返回的内容。文档没有提供任何关于它返回什么的信息。
我想测试一个组件,它包含条件渲染。因此,如果一个状态为true,那么JSX-HTML应该呈现,如果不是false的话。 如果我想使用Jest、Enyzme、React测试库来测试这一点,我应该如何继续? 我有一个组件,它的实现细节对这个主题并不重要。请注意,它包含 对于我的测试,我想把它设置为真。
从输入字段中,我将值作为参数发送给设置状态的函数。我有多个输入字段,所以希望使用它们的名称(等于它们的状态键),然后使用相同的函数,并将键和值传递给设置状态的函数。 这是我的代码。
是否有方法将defaultValue传递给状态?我也尝试了value={},但值根本不变。