1

所以我想要做的是将用户名字段的值重置为''并将其聚焦(当我收到从服务器发回的错误时)。

// get the form ref
var form = this.refs.loginForm.getForm();
// reset username field value (this actually gets updated if i check 
// it in the console but the UI won't re-render
form.updateData({username: ''}, {validate: false})
// focus the username input (ofc doesnt work at all)
form.fields.username.focus();
4

2 回答 2

1

重点部分取决于您如何呈现表单,因为您需要访问真实的 DOM 节点来执行此操作。如果您手动渲染它,您可以ref在渲染此字段时传递 a:

form.boundField('username').render({attrs: {ref: 'username'}})

稍后您可以React.findDOMNode(this.refs.username).focus()在需要聚焦该字段时执行此操作。

如果另一个 React 组件正在为您呈现表单,例如<RenderForm>,则目前没有办法获取实际的 DOM 节点,它最终会为每个输入呈现。这有一个未解决的问题


数据更新代码应该可以正常工作,并且form.updateData()应该强制包含表单的组件进行更新。你能提供一个工作的例子吗?

于 2015-04-29T11:07:12.417 回答
0

这与 React 有什么关系吗?基本上在页面加载时检查是否发生了一些错误,如果该值存在,那么您希望将该值作为属性传递给您的反应组件以相应地构建您的 UI。

抱歉,这个问题有点含糊,有很多方法可以解决。没有真正做出具体反应,因为您说它是从服务器返回的,我假设页面重新加载?或者如果是这种情况,您是否正在进行返回服务器的 ajax 调用,将响应记录为 React 状态中的变量,并告诉它如果该变量存在该怎么办。

于 2015-04-28T23:54:56.743 回答