从React中的子级调用函数

停止面

假设我有这个组件

class Foo extends React.Component {
    onClick = () => {
        alert('Yay');
        this.props.setWhatever()
    }

    render() {
        return (
            <Bar>
                <input 
                    type='radio'
                    checked={this.props.getWhatever}
                    onClick={() => this.onClick()} />
            </Bar>
        )
    }
}


class Bar extends React.Component {    
    render() {
        return (
            <label>
               {this.props.children}
            </label>
        )
    }
}

this.onClick()不执行。当我更改onClick={() => this.onClick()}onClick={this.onClick()}它时,它会以无尽的循环结束。这是为什么?

萨钦·卡莱卡尔

箭头函数表达式不适合用作方法,并且不能用作构造函数。箭头函数自动绑定this到父/外部组件或定义/执行函数的上下文。

  • onClick={() => this.onClick()}-点击发生时this
    实际上是指输入按钮,而不是您的组件。

  • onClick={this.onClick()} -在呈现组件后立即创建并执行闭包。

  • onClick={this.onClick} -单击发生后,将创建并执行一个闭包。

请在构造函数中绑定所有函数,并避免使用箭头函数。

constructor(props){this.onClick = this.onClick.bind(this)}
...
onClick() {...}
...
<input onClick={this.onClick} />

请在此处阅读有关箭头功能的更多信息https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

更新:避免在希望this在箭头功能内使用的地方使用箭头功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在父级中调用函数并将`this`绑定到子级?

在reactjs中从父级调用子级函数

React父函数调用子级的嵌套componentDidMount函数?

无法在子级React Native中调用父级的方法

从使用 react native 中的 map 函数渲染的组件的父级调用子方法

父级的析构函数中的CRTP调用子级函数

从父级调用子级中的函数会说“不是函数”吗?

在React的子组件中调用父函数

React 16:使用钩子和功能组件时从父级调用子级函数

在React Native中如何从子级调用父函数

从其子级触发React父级功能组件中的函数

将 React-Typescript 中的函数道具从父级传递给子级

如何从父级调用子级构造函数?

AureliaJS-从父级调用子级函数

父级函数从未调用子级$ emit之后

如何强制(带有警告)覆盖其子级的子级调用父级函数?

无法从 React 中的子组件调用父组件函数

如何从函数调用中渲染React子组件?

如何在React子组件中调用继承的函数

如何从子级调用父级函数-react-native

从Golang的父级实现方法中调用子级方法

如何在将父级的fetch调用中的数据传递给它之前停止React子级组件的加载

如何在 React Native 打字稿中从父级调用子组件方法

R中函数调用的优先级

在React中调用函数

在React中调用函数

如何在Javascript中从子级调用父级函数

在子级而非父级中复制构造函数

使用引用从父级调用子挂钩函数