当前位置: 首页 > 知识库问答 >
问题:

React:用道具和状态控制输入值

林鸿彩
2023-03-14

给定一个具有受控输入的React组件,我希望能够:

  1. 设置来自父级状态的输入值
  2. 允许用户将输入更改为任意值
  3. 只有在用户提交并且输入通过验证后才更新父级的状态。

我可以用下面的代码片段完成1和2,但是由于值是通过props进入ChildComponent的,所以我不确定如何在不更改父级上myInput的值的情况下更改输入值。

class ChildComponent extends React.Component
{
    render(){
        return <input type="text" value={this.props.inputValue} onChange={this.handleChange.bind(this)} />
    }  
    handleChange(e){
        this.props.onInputChange(e.target.value);
    }
    handleSubmit(){
        // do some validation here, it it passes...
        this.props.handleSubmit();
    }
}

class ParentComponent extends React.Component{
    constructor(){
      super();
      this.state = {myInput: ""};
    }
    render(){
        return <ChildComponent inputValue={this.state.myInput} onInputChange={this.handleChange.bind(this)} />
    }
    handleChange(newValue){
        this.setState({myInput: newValue});
    }
    handleSubmit(){
        // do something on the server
    }
}

共有1个答案

韩宜春
2023-03-14

然后只需将状态移动到子组件,而不是直接从props.inputvalue呈现。基本上,您只需将handlechange移动到子级。

GetInitialState中的props.inputValue设置初始值,然后确保更新ComponentWillReceiveProps中的子状态。

 类似资料:
  • 我已经用ReactJS和ES6进行了几天的实验,并创建了两个组件,即

  • 控制台-频道-状态统计 接口URL {youke-url}/console/Index.php?c=live&a=countStatus&timestamp=1607677497&access_key=abc&sign=c7da8103312da8793af4f526a42cb6ebaa06cfd4 请求方式 POST Content-Type form-data 请求Query参数 参数 示例值

  • 我有一个React应用程序,其中来自父组件的道具被传递到子组件,然后道具设置子组件的状态。 如何让它更新子组件上的状态? 我的精简代码:

  • 我正在学习React/redux-奇妙的框架,不知道JS Counl会这么酷!!! 我的问题... 我有一个父组件和一个子组件。可以通过以下方式隐藏/显示子项: 按下子对象上的按钮将其隐藏 1)可以通过使用this.state控制2)可以通过设置来自父母的道具来控制 我的问题是我不能用状态和道具来控制孩子,因为我认为它是状态或道具。 (这并不完全正确。我可以使用事件组件WillReceivePro

  • 我实际上正在学习reactjs,并且实际上正在开发一个小的TODO列表,包装在一个名为TODO的“父组件”中。 我决定将初始化移到componentDidMount内部,但这似乎是一个反模式,我需要另一个解决方案。你能帮我吗? 下面是我的实际代码:

  • 是否更像React的方法,使我们的模型属性,并在保存之前将其编译回模型,如下所示: 这不需要调用,但是随着模型的增长,(post可能有作者、主题、标记、注释、评分等)组件开始变得非常复杂。 第一种方法是ReactLink吗?