因此,我要做的是将username字段的值重置为'',并将其作为焦点(当我收到从服务器发回的错误时)。
// 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();发布于 2015-04-29 19:07:12
焦点部分取决于您如何呈现表单,因为您需要访问实际的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()应该强制包含表单的组件进行更新。你能提供一个有效的例子吗?
发布于 2015-04-29 07:54:57
这一切都和React有关吗?基本上,在页面加载时检查是否发生了一些错误,如果该值存在,那么您会希望将该值作为属性传递给react组件,以便相应地构建您的UI。
抱歉,这个问题有点模糊,你有很多方法可以解决它。没有具体的反应,因为你说它是从服务器返回的,我假设页面是重新加载的?或者,您正在进行一个返回到服务器的ajax调用(如果是这样的话),将响应记录为React状态中的一个变量,并告诉它如果该变量存在,该如何处理。
https://stackoverflow.com/questions/29926983
复制相似问题