form.getFieldValue返回的值不是响应式的吗?

form.getFieldValue返回的值不是响应式的吗?

34d79ad4636b4612b15e2b7bca19926.png

react新手, 请问在页面改变了radio的值, 但是第一行代码对应的内容在页面上为什么不发生变化

阅读 1.9k
4 个回答

我们可以查看源码 只是一个函数的调用
image.png

React 不存在“响应式”一说,都是单项数据流,除非自己实现。
不过,如果你能在调用 setFeildValue 之后,随即触发一次视图更新,那么渲染函数里的 getFeildValue 会重新执行,把最新的值更新到视图,除非 setFeildValue有异步过程。

Class Component 强制刷新:

else {
  form.setFeildValue("xxxx", "a");
}
this.forceUpdate();

函数组件强制刷新:

const [seed,setSeed] = useState(0);
const forceUpdate = useCallback(() => {
  setSeed(seed + 1);
}, [seed]);

// ……
else {
  form.setFeildValue("xxxx", "a");
}
forceUpdate();

使用Form.useWatch获取的数据就是响应式的
const radioGroup1 = Form.useWatch('radio-group1', form);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题