反应新形式,设置输入值和焦点字段

时间:2015-04-28 18:17:33

标签: javascript reactjs newforms

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

// 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();

2 个答案:

答案 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状态中的变量,并告诉它应该该变量存在时该做什么。