将函数作为对象的值传递

时间:2019-06-18 06:11:40

标签: javascript reactjs

我正在使用reactjs。

我想将action数组传递给我的组件。我的动作是这样的:

const actions = [
                 {
                   'action':'delete',
                   'on':'id',
                   'onClick':this.delete()
                 },
                 {
                   'action':'detail',
                   'on':'id',
                   'onClick':this.detail()
                 }
                ]

<MyComponent actions={actions}/>

但是我不知道是否可以将函数传递给对象内部的组件。

已更新

现在如何传递参数?我想将参数从MyComponent传递到父组件。

3 个答案:

答案 0 :(得分:3)

是的,您可以在对象内部传递函数,但不应调用。试试这个

let action ={
    delete:{
        on:'id',
        onClick:this.delete.bind(this)
    },
    details:{
        on:'id',
        onClick:this.detail.bind(this)
    }
}
<MyComponent actions={actions}/>

如果要将变量从子级传递给父级,请使用lambda函数

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

    render() {
        return (
            <div>
                <button onclick={e=>{
                //here you can pass any param from child to parent
                let params={}; //your params
                this.props.actions.delete(params);
            }}>Delete</button>

            <button onclick={e=>{
                //here you can pass any param from child to parent
                let params={}; //your params
                this.props.actions.detail(params);
            }}>Details</button>
            </div>
        )
    }

}

答案 1 :(得分:2)

()将调用您的函数,尝试:

      const actions = [
        {
          'action':'delete',
          'on':'id',
          'onClick':this.delete
        },
        {
          'action':'detail',
          'on':'id',
          'onClick':this.detail
        },
      ]

答案 2 :(得分:0)

我认为您正在失去上下文,因此无法识别this。 也许您应该这样做:

    const actions = [
    {
      'action':'delete',
      'on':'id',
      'onClick':(() => this.delete(params))
    },
    {
      'action':'detail',
      'on':'id',
      'onClick':(() => this.detail(params))
    },
  ]

<MyComponent actions={actions}/>