Javascript reactjs传递回调将导致未定义

Javascript reactjs传递回调将导致未定义,javascript,reactjs,Javascript,Reactjs,我正在尝试使用React v0.13.3构建一个考试生成器。问题是,当我单击添加选项时,作为prop传递给Question元素的回调函数未定义。这是完整的片段 顺便说一下,我已经粘贴了转换后的脚本,您应该需要jsx脚本。给你 这是因为在渲染方法内的检查组件的映射函数中,该关键字未引用检查组件对象。您可以使用Es6 arrow函数修复问题,也可以创建名为_this的局部变量,并在映射函数之前将其分配给_this 带箭头功能 var questions = this.state.questi

我正在尝试使用React v0.13.3构建一个考试生成器。问题是,当我单击添加选项时,作为prop传递给Question元素的回调函数未定义。这是完整的片段

顺便说一下,我已经粘贴了转换后的脚本,您应该需要jsx脚本。给你


这是因为在渲染方法内的检查组件的映射函数中,该关键字未引用检查组件对象。您可以使用Es6 arrow函数修复问题,也可以创建名为_this的局部变量,并在映射函数之前将其分配给_this

带箭头功能

    var questions = this.state.questions.map((question, index) =>{
        return (
            React.createElement(Question, {
                key: index, 
                index: index, 
                src: question, 
                handleAddChoice: this.onAddChoice})
        );
    });
JSFIDLE

局部变量赋值
jsFIDLE

这是因为在render方法内的检查组件的映射函数中,该关键字没有引用检查组件对象。您可以使用Es6 arrow函数修复问题,也可以创建名为_this的局部变量,并在映射函数之前将其分配给_this

带箭头功能

    var questions = this.state.questions.map((question, index) =>{
        return (
            React.createElement(Question, {
                key: index, 
                index: index, 
                src: question, 
                handleAddChoice: this.onAddChoice})
        );
    });
JSFIDLE

局部变量赋值
jsFIDLE

这是因为在render方法内的检查组件的映射函数中,该关键字没有引用检查组件对象。您可以使用Es6 arrow函数修复问题,也可以创建名为_this的局部变量,并在映射函数之前将其分配给_this

带箭头功能

    var questions = this.state.questions.map((question, index) =>{
        return (
            React.createElement(Question, {
                key: index, 
                index: index, 
                src: question, 
                handleAddChoice: this.onAddChoice})
        );
    });
JSFIDLE

局部变量赋值
jsFIDLE

这是因为在render方法内的检查组件的映射函数中,该关键字没有引用检查组件对象。您可以使用Es6 arrow函数修复问题,也可以创建名为_this的局部变量,并在映射函数之前将其分配给_this

带箭头功能

    var questions = this.state.questions.map((question, index) =>{
        return (
            React.createElement(Question, {
                key: index, 
                index: index, 
                src: question, 
                handleAddChoice: this.onAddChoice})
        );
    });
JSFIDLE

局部变量赋值
jshiddle

根据pashaplus的回答,您还可以像下面这样将上下文参数传递给map函数:

var questions = this.state.questions.map(function (question, index) {
    return (
        <Question 
            key={index} 
            index={index} 
            src={question} 
            handleAddChoice={this.onAddChoice} />
    );
}, this);
var questions=this.state.questions.map(函数(问题,索引){
返回(
);
},这个);

按照pashaplus的回答,您还可以像下面这样将上下文参数传递给map函数:

var questions = this.state.questions.map(function (question, index) {
    return (
        <Question 
            key={index} 
            index={index} 
            src={question} 
            handleAddChoice={this.onAddChoice} />
    );
}, this);
var questions=this.state.questions.map(函数(问题,索引){
返回(
);
},这个);

按照pashaplus的回答,您还可以像下面这样将上下文参数传递给map函数:

var questions = this.state.questions.map(function (question, index) {
    return (
        <Question 
            key={index} 
            index={index} 
            src={question} 
            handleAddChoice={this.onAddChoice} />
    );
}, this);
var questions=this.state.questions.map(函数(问题,索引){
返回(
);
},这个);

按照pashaplus的回答,您还可以像下面这样将上下文参数传递给map函数:

var questions = this.state.questions.map(function (question, index) {
    return (
        <Question 
            key={index} 
            index={index} 
            src={question} 
            handleAddChoice={this.onAddChoice} />
    );
}, this);
var questions=this.state.questions.map(函数(问题,索引){
返回(
);
},这个);