在 React 渲染方法中使用 for failing inside return 语句
use of for failing inside return statement inside React render method
以下代码失败,错误 Unexpected token
指向 for
:
import React from 'react';
import ReactDOM from 'react-dom';
export default React.createClass({
render() {
let nodes = JSON.parse(this.props.nodes)
console.log(Object.keys(nodes));
return (
<ol>
{
for (var k in nodes){
let val = nodes[k];
let children = val.children;
let content = val.content;
<li key={k} id={k} content={content} />
// <TChildPane key={k} count={children.length} />
}
}
</ol>
);
}
});
this.props.nodes
是父组件传过来的,是一个object/hash
这是包含 'children' 和 'content' 键的对象集合。 'children' 键的值是一个数组。 'content' key 的值是字符串或 bool 或 int 等...
如果您看到与 JSX 相关的错误,请告诉我!??
谢谢。
找到关于在 jsx 中可以做什么和不能做什么的文档并不像应该的那么容易,但是像这样使用 for 是您不能做的事情之一。如果您想就地执行更复杂的代码,请将其移至一个函数中并在那里调用该函数:
export default React.createClass({
renderList(nodes) {
const list = [];
for (const k in nodes){
let val = nodes[k];
let children = val.children;
let content = val.content;
list.push(<li key={k} id={k} content={content} />);
}
return list;
}
render() {
let nodes = JSON.parse(this.props.nodes)
return (
<ol>
{ this.renderList(nodes) }
</ol>
);
}
});
或者你可以这样做
{nodes.map(function(object, i){
return <li key={object} id={object} content={object.content} />;
})}
你可以尝试 Array.map() 在 React 中循环
import React from 'react';
import ReactDOM from 'react-dom';
export default React.createClass({
render() {
let nodes = JSON.parse(this.props.nodes)
return (
<ol>
{
nodes && nodes.map((item,index)=>{
return(
<li key={index} id={index} content={item.content} />
)
})
}
</ol>
);
}
});
以下代码失败,错误 Unexpected token
指向 for
:
import React from 'react';
import ReactDOM from 'react-dom';
export default React.createClass({
render() {
let nodes = JSON.parse(this.props.nodes)
console.log(Object.keys(nodes));
return (
<ol>
{
for (var k in nodes){
let val = nodes[k];
let children = val.children;
let content = val.content;
<li key={k} id={k} content={content} />
// <TChildPane key={k} count={children.length} />
}
}
</ol>
);
}
});
this.props.nodes
是父组件传过来的,是一个object/hash
这是包含 'children' 和 'content' 键的对象集合。 'children' 键的值是一个数组。 'content' key 的值是字符串或 bool 或 int 等...
如果您看到与 JSX 相关的错误,请告诉我!??
谢谢。
找到关于在 jsx 中可以做什么和不能做什么的文档并不像应该的那么容易,但是像这样使用 for 是您不能做的事情之一。如果您想就地执行更复杂的代码,请将其移至一个函数中并在那里调用该函数:
export default React.createClass({
renderList(nodes) {
const list = [];
for (const k in nodes){
let val = nodes[k];
let children = val.children;
let content = val.content;
list.push(<li key={k} id={k} content={content} />);
}
return list;
}
render() {
let nodes = JSON.parse(this.props.nodes)
return (
<ol>
{ this.renderList(nodes) }
</ol>
);
}
});
或者你可以这样做
{nodes.map(function(object, i){
return <li key={object} id={object} content={object.content} />;
})}
你可以尝试 Array.map() 在 React 中循环
import React from 'react';
import ReactDOM from 'react-dom';
export default React.createClass({
render() {
let nodes = JSON.parse(this.props.nodes)
return (
<ol>
{
nodes && nodes.map((item,index)=>{
return(
<li key={index} id={index} content={item.content} />
)
})
}
</ol>
);
}
});