javascript - React 组件之间的交互

标签 javascript reactjs

我有一个如下所示的父组件

UploadView.js

    getInitialState: function () {
        return {
            file: null,
            mappingType: null
        }
    },

    setMappingType: function(){
        this.setState({
            mappingType: this.state.mappingType
        });
    },

    render: function(){
       <FileDropdown mappingType={this.setMappingType}/>
       <FileUpload mappingType={this.state.mappingType}/>
    }

FileDropDown 是一个子组件,向用户呈现下拉功能,如下所示

FileDropDown.js

    pickedOption: function(event){
        var option = event.nativeEvent.target.selectedIndex;
        var value = event.nativeEvent.target[option].text;
        this.props.mappingType = value;
    },

    render: function(){
        return (
          <select name="typeoptions" id="mappingTypes" onChange={this.pickedOption}>.....</select>
        )
    }

我试图了解,上述更新状态的正确方法是否正确,并且更新/设置 FileDropDown 中的值 this.props.mappinType 会将更新后的值设置为状态 父UploadView中的mappingType

最佳答案

如果我理解正确的话,您可以将一个名为 setMappingType 的函数(或方法)从 UploadView.js 发送到 FileDropDown.js。当在 FileDropDown.js 中的 pickedOption 方法中选择一个选项时,您将调用此函数,从而导致父组件更新。

您实际上没有这样做,而是将值分配给了 props。换句话说,改变这个

this.props.mappingType = value;

进入

this.props.mappingType(value);

然后将方法setMappingType更改为实际接收该值的函数

setMappingType: function(value){
    this.setState({
        mappingType: value
    });
},
<小时/>

哦,还有其他与您的问题无关的事情,您可以使用像这样的引用检索您的值:

pickedOption: function(event){
    var value = this.refs._myRef.value;
},

render: function(){
    return (
      <select ref='_myRef' onChange={this.pickedOption}>
        <option value='1'>One</option>
        <option value='2'>Two</option>
      </select>
    )
}

希望对您有帮助;)

关于javascript - React 组件之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419847/

相关文章:

javascript - Node.JS、ExpressJS、React 和 HTML JSON 渲染

reactjs - 如何在 React App 中排除全局样式?

javascript - browserify bundle 不处理通过相对路径导入文件

javascript - 在 Node.js 中暴露和组合错误的最佳方式是什么?

javascript - 如何遍历关联数组并在数据 block 之间延迟呈现数据 block

javascript - ReactJS:是否可以在子组件中包含父组件?

javascript - JSX 元素类不支持属性,因为它没有 'props' property.ts(2607)

javascript - Browserify 模块的参数

php - 使用 mySQL 数据、ajax、PHP post 更新 insideHTML 文本

javascript - 如何让 Web 组件使用 TypeScript 为 IE11/Edge/Chrome/Firefox 编译?