javascript - 在 React 中返回 html
问题描述
我有以下代码要作为 HTML 输出返回。
render () {
var ret = "";
var x = 0;
var name = val + "[]";
var v = this.state.course[val];
for (x = 0; x < v.length; x++) {
var label = val + x;
var vv = this.state.course[val][x];
input = <input type="text" name={name} value={vv} onChange={(event) => {
var newCourse = {...this.state.course};
newCourse[val][x] = event.target.value;
this.setState({course: newCourse})
}} key={val}/>;
ret += <div>
<label>{label}</label><br/><br/>
{input}
</div>;
}
ret += <button onClick={this.addInput.bind(this, val)} />
ret += "</div>";
return ret;
}
相反,它返回为 [object Object][object Object][object Object][object Object][object Object][object Object]
我想将 ret 输出作为 HTML 呈现给 DOM。我究竟做错了什么?
解决方案
这<button onClick={this.addInput.bind(this, val)} />
只是调用的语法糖React.createElement
。它返回一个对象。
因此,您将一个对象连接到一个字符串。类似的东西
const a = "string" + {};
// a equals "string[objectObject]"
相反,您应该遵循以下原则:
const someFunc = () => {
const arr = [];
for (let i = 0; i < 20; i++) {
arr.push(<div>{i}</div>);
}
return <div>{arr}</div>
}
推荐阅读
- angular - Angular Protractor - 验证页面重定向
- node.js - new Buffer() 背后的确切安全问题
- google-bigquery - 在两个不同的日志在“jobStatus”中具有“DONE”状态后,如何将发布消息请求发送到 Cloud pub/sub?
- javascript - Array.join("") 方法不工作 JavaScript
- android - “getItem”的返回类型不是被覆盖成员“@NonNull public abstract fun getItem(p0: Int)”的返回类型的子类型
- angular - 如何使用 Renderer2 创建带有模板引用的元素?
- makefile - Makefile:当我使用'make -j'时如何控制部分编译顺序?
- python - 将 hh:mm:ss [String] 格式的持续时间转换为分钟
- python - 删除 pandas 中 min 和 sec 中的十进制值
- android - 如何在不解释的情况下将 github 库导入到 androidStudio?