javascript - 将方法传递给子组件

标签 javascript reactjs components dom-events

我的 React 应用程序有几个类似的自定义按钮,它们执行不同的任务。所有按钮的 UI 都相似,唯一不同的是每个按钮必须触发的操作和标题。

包含按钮的父组件的工作代码(类似于)如下:

class Page extends Component { 
    constructor(props) {
        super(props);
    }

    action1(){
       //... do stuff...
    }

    action2(){
       //... do stuff...
    }

    render(){

        return(
            <div className="table-row">

                <div className="table-cell">
                    <div className="button" 
                        onClick={this.action1.bind(this)}>{"button1"}
                    </div>
                </div>

                <div className="table-cell">
                     <div className="button" 
                          onClick={this.action2.bind(this)}>{"button2"}
                     </div>
                </div> 
            </div>
        );
    }
}

是否可以像传递变量值一样将方法传递给子组件?我想把它变成这样的东西:

class Page extends Component { 
    constructor(props) {
        super(props);
    }

    action1(){
       //... do stuff...
    }

    action2(){
       //... do stuff...
    }

    render(){

        return(
            <div className="table-row">

                <div className="table-cell">
                    <CustomButton action={this.action1.bind(this)} title={"button1"}/>
                </div>

                <div className="table-cell">
                     <CustomButton action={this.action2.bind(this)} title={"button2"}/>
                </div> 
            </div>
        );
    }
}

class CustomButton extends Component{
    constructor(props){
        super(props);
    }

    render() {
        return (
            <div className="table-cell"><div className="button" 
                onClick= {this.props.action}>{this.props.title}
            </div>
        );
    }
}

处理这种情况的正确方法及其背后的理论是什么?

我正在使用 React 和 Meteor,以防它有所作为。

最佳答案

您可以将 props 传递给组件。传递的 Prop 可以有任何数据类型的 javascript。

在你的例子中,你想传递一个 Action Prop ,它有一个函数作为值。然后你在你的组件中访问 Action Prop 并使用它。

简而言之,它背后没有任何理论。你在做什么是正确的。这就是 React 处理将数据传递给其他组件的方式。请注意,这不是将数据传递给子组件的唯一方法。

关于javascript - 将方法传递给子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732053/

相关文章:

javascript - 尝试在组件中设置 Redux props 以进行 Jest/Enzyme 测试时,ReactWrapper::setProps() 错误

javascript - 尝试使用 React + TypeScript 项目修复 tslint 错误

python - 将 URL 路径拆分为组件

reactjs - 使用 React + TypeScript 设置状态

javascript - 在弹性容器中进行 react 选择

reactjs - React onClick 在加载时触发多次,并且组件 props 中不包含回调函数

javascript - SyntaxHighlighter.all() 在 DOM 级别不起作用?

javascript - HTML5 拖放无法正常工作

javascript - jQuery ajax 的问题

javascript - 通过选中单选按钮显示一个 div 并隐藏另一个 div