gpt4 book ai didi

javascript - React Render 中的不变违规或在 React 中迭代和返回的正确方法

转载 作者:可可西里 更新时间:2023-11-01 02:52:15 24 4
gpt4 key购买 nike

我在 React 渲染中遇到了持续存在的问题。

这段代码

/** @jsx React.DOM */
var AnswerRows = React.createClass({
componentDidMount: function() {
},
render: function() {
{this.props.answers.map(function(answer, i) {
return (
<div id="answerRow">
<label className="AnswerText">
<input type="checkbox" value={answer.id} />
{answer.text}
</label>
</div>
);
}, this)}
}
});

var QuizTaking = React.createClass({
componentDidMount: function() {
},
render: function() {
return (
<div className="card-holder">
<div className="showQuestionCard x-card host">
<h3 dangerouslySetInnerHTML={{__html: this.props.question.text}}></h3>
<div className="answerRows">
<AnswerRows answers={this.props.question.answers}/>
</div>
<div className='submitAnswers'></div>
</div>
<div className="paper-shadow-bottom"></div>
</div>
)
}
})

会给我 Invariant Violation: AnswerRows.render(): 必须返回一个有效的 ReactComponent。您可能返回了未定义、数组或其他一些无效对象。 错误。但是,这每次都有效:

/** @jsx React.DOM */

var TestIndex = React.createClass({

propTypes: {
},
loadTest: function(i) {
window.location.replace(this.props.tests[i].url.replace(".json", "/take"))
},

render: function () {
return(
<div className="testTable card-holder">
<div className="card-contents">
{this.props.tests.map(function(test, i) {
return (
<div className="testTableRow x-card host" key={test.id}>
<label className="__TITLE">{test.title}
<button onClick={this.loadTest.bind(test, i)} key={i} type="button" className="StartButton paper-button raisedButton">Start this test</button>
</label>
<div className="paper-shadow-bottom"></div>
</div>
);
}, this)}
</div>
</div>
)
}
});

我真的很想了解这里发生了什么,也许还有“正确”的方法。

最佳答案

您不能从 render 函数返回多个元素(如 map 函数返回的数组)。此外,您还缺少 return 语句。试试这个:

var AnswerRows = React.createClass({
componentDidMount: function() {
},
render: function() {
return (
<div>
{this.props.answers.map(function(answer, i) {
return (
<div id="answerRow">
<label className="AnswerText">
<input type="checkbox" value={answer.id} />
{answer.text}
</label>
</div>
);
}, this)}
</div>
);
}
});

关于javascript - React Render 中的不变违规或在 React 中迭代和返回的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26430757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com