TypeError:这是未定义的“反应”[重复]

Posted

技术标签:

【中文标题】TypeError:这是未定义的“反应”[重复]【英文标题】:TypeError: this is undefined "React" [duplicate] 【发布时间】:2020-07-13 05:10:33 【问题描述】:

出现类型错误,但是当我使用 onClick=()=>this.clickHandler() 时,它就像魅力一样。那么当我使用 onClick=()=>this.clickHandler() 时发生了什么,以及为什么我通过编写 onClick=this.clickHandler 得到错误p>

constructor(props)
        super(props)
    
    render() 
        return (
            <div>
                <button onClick=this.clickHandler>Class click</button>
                /* <button onClick=()=>this.clickHandler()>Class click</button> */
            </div>
        )
    

    clickHandler()
        this.logPrint()
    
    logPrint()
        console.log("click the button");

    

【问题讨论】:

反应中缺少绑定 这能回答你的问题吗? Why and when do we need to bind functions and eventHandlers in React? ***.com/questions/33973648/… 【参考方案1】:

对事件处理程序使用箭头函数,它们会自动绑定 this:

clickHandler = () => 
    this.logPrint()

【讨论】:

【参考方案2】:

实现这一目标的两种方法

使用箭头函数

clickHandler: () => 


在构造函数中与组件的this绑定方法

constructor(props)
    super(props);
    this.clickHandler = this.clickHandler.bind(this);

【讨论】:

以上是关于TypeError:这是未定义的“反应”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

反应:TypeError:无法读取未定义的属性“状态”。需要说明

TypeError:无法解构“对象(...)(...)”的属性“setValues”,因为它未定义。 (反应/创建反应应用)

TypeError:无法读取反应js中未定义的属性'fn'

TypeError:未定义不是对象(评估'array.length')反应原生[关闭]

“TypeError:无法读取未定义的属性” [重复]