代码之家  ›  专栏  ›  技术社区  ›  lost9123193

从React中的输入直接触发方法

  •  1
  • lost9123193  · 技术社区  · 6 年前

                 <input
                  className="text"
                  required
                  onChange={this.props.updateInput.bind(this,"title",e.target.value)}
                  value={this.props.title}
                />
    

    我有一个问题e.target.value不被识别。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Tholle    6 年前

    可以通过创建一个新的内联箭头函数来完成此操作,该函数沿着 value 从事件中。

    <input
      className="text"
      required
      onChange={e => this.props.updateInput("title", e.target.value)}
      value={this.props.title}
    />
    
        2
  •  0
  •   devserkan    6 年前

    如果你使用@Tholle的建议,那么你应该使用 updateInput 功能如下:

    updateInput(title, value) {
        console.log( title, value );
    }
    

    title 子组件的父组件中的状态。下面是一个示例:

    class App extends React.Component {
      state = {
        title: "",
      }
      updateInput = title => {
        this.setState( { title });
      }
      render() {
        return (
          <div>
            <Input title={this.state.title} onChange={this.updateInput} />
            <br />
            Title is: {this.state.title}
          </div>
        );
      }
    }
    
    const Input = (props) => {
      const handleInput = e =>
        props.onChange(e.target.value)
      return (
        <input
          className="text"
          required
          onChange={handleInput}
          value={props.title}
        />
      );
    }
    
    ReactDOM.render(
      <App />,
      document.getElementById("root")
    );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <div id="root"></div>