【问题标题】:react newforms, set input value and focus field反应新表单,设置输入值和焦点字段
【发布时间】:2015-07-07 18:00:21
【问题描述】:

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

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

【问题讨论】:

    标签: javascript reactjs newforms


    【解决方案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() 应该强制更新包含表单的组件。你能提供一个可行的例子吗?

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-12
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        相关资源
        最近更新 更多