所以我想要做的是将用户名字段的值重置为''
并将其集中(当我收到从服务器发回的错误时)。
// 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();
答案 0 :(得分:1)
聚焦部分取决于您渲染表单的方式,因为您需要访问真正的DOM节点才能执行此操作。如果您手动渲染,则可以在渲染此字段时传递ref
:
form.boundField('username').render({attrs: {ref: 'username'}})
之后,当您需要关注该字段时,您可以React.findDOMNode(this.refs.username).focus()
。
如果另一个React组件正在为您呈现表单,例如<RenderForm>
,那么目前无法获得实际的DOM节点,它最终会为每个输入呈现。 There's an open issue for this
数据更新代码应该正常工作,因为form.updateData()
应该强制包含表单的组件进行更新。你能提供一个有效的例子吗?
答案 1 :(得分:0)
这与React有什么关系吗?基本上在页面加载检查时发生了一些错误,如果该值存在,那么您希望将该值作为属性传递给您的react组件以相应地构建UI。
对不起,问题有点模糊,有很多方法可以处理它。因为你说它是从服务器回来而我假设页面重新加载,所以没有特别的具体反应?或者你正在做一个回到服务器的ajax调用(如果是这种情况),将响应记录为React状态中的变量,并告诉它应该该变量存在时该做什么。