反应设置输入的值

Posted

技术标签:

【中文标题】反应设置输入的值【英文标题】:React setting input's value 【发布时间】:2016-04-01 15:22:28 【问题描述】:

我在许多有关管理输入值的 React 教程中看到。以下模式:

Parent 将 props 传递给 Input Component,handleInputText 设置 anyValue 的状态:

<InputComponent textValue=this.state.anyValue onInputtingText=this.handleInputText/>

在 Input Component 上,onEvent 可以是 ==> onChange, onBlur...:

<input type='text' ref='inputRef' value=this.props.textValue onEvent=this.handleInput/>

InputComponent 的句柄输入:

handleInput()
  this.setState(this.refs.inputRef.value)

现在我的发现,当父母在设置状态时起作用并记录初始状态时,我尝试记录它。这是一些初步的结论:

    只要事件触发,输入的值就不是 InputComponent 的当前值。它是在父级上设置为该值的值。

    在第二次触发事件时,输入值和 this.props.textValue 都匹配。

我的问题是,你如何以反应的方式处理这个问题?还是必须在 handleInput 函数中检查这个?

提前致谢。

【问题讨论】:

是的,同样,我刚刚发现,每当我尝试在设置时记录状态值时,它都会返回初始值。为什么会这样?我下载了 React 调试器并将状态设置为正确的值。谢谢! 【参考方案1】:

您可以在this.handleInputText 中设置状态并在InputComponent 中调用它,

var App = React.createClass(
  getInitialState() 
    return  anyValue: '' ;
  ,

  handleInputtingText(value) 
    this.setState( anyValue: value );
  ,

  render() 
    return <div>
      <p> this.state.anyValue </p>
      <InputComponent 
        textValue= this.state.anyValue  
        onInputtingText= this.handleInputtingText  
      />
    </div>
  
);

var InputComponent = React.createClass(
  handleInput(e) 
    this.props.onInputtingText(e.target.value);
  ,

  render: function() 
    return <input 
      type="text" 
      value=this.props.textValue 
      onChange= this.handleInput  
    />;
  
);

Example

【讨论】:

以上是关于反应设置输入的值的主要内容,如果未能解决你的问题,请参考以下文章

如何更改输入反应本机的值

在不同组件中更改值时将设置值反应到另一个组件

反应:onChange 不更新输入字段的值

反应输入文本失去对重新渲染的关注

R Shiny:修改选择后保留/保留反应输入的值

如果我在反应中更改一个输入,所有值字段都将更改为相同的值