即使打印items
在返回函数之前记录一个填充的数组,它也不会真正呈现任何内容。我知道一个事实,它不是一个不正确显示HTML的问题。所以我怀疑并在返回函数中对其进行字符串化以确定数据即时记录是否确实存在并且对我的恐惧我意识到它不是。如代码所示,在返回函数中,我得到一个空数组!
class Derp extends Component {
constructor(props){
super(props);
mainStore.subscribe(this.render.bind(this));
}
render(){
var items = mainStore.getState().itemReducer.items;
console.log(items); //yields an array of items as expected
return (
<div>
<span>{JSON.stringify(items)} </span> //yields [] in the DOM !!!!!!!
//when it should yield the same as above, a fully populated array
{
items.map(item =>
<div key={item.id}>
{item.name}
</div>
)
}
</div>
)
}
}
我已成功完成了这么多次,但这一次我无法弄清楚它可能出现什么问题。感谢您抽出宝贵时间。
编辑1:我知道这看起来很惹人注意(因为它是)但是组件正在监听所有状态更改:mainStore.subscribe(this.render.bind(this));
所以它应该始终可以访问更新的数据。
答案 0 :(得分:0)
从div
函数返回map
:
items.map(item =>
return <div key={item.id}>
item.name
</div>
)
答案 1 :(得分:0)
尝试转义您要呈现的内容:
items.map(item =>
<div key={item.id}>{item.name}</div>
)
答案 2 :(得分:0)
我在您的代码中看到两个问题:
react16 +
return [
<span>{JSON.stringify(items)} </span>,
...items.map(item =>
<div key={item.id}>
{item.name}
</div>
)
]
<强>&LT; react16
return (
<div>
<span>{JSON.stringify(items)} </span>
{items.map(item =>
<div key={item.id}>
{item.name}
</div>
)}
</div>
)
答案 3 :(得分:0)
似乎问题是直接调用渲染。而是调用forceUpdate()工作正常。我不是100%为什么会发生这种情况,但我怀疑在它上面调用render并不意味着它可能需要在React管道中的React上下文中调用。我可能会非常失望,如果是这样的话,请告诉我并将其描述得更好,我现在能够做到。
感谢大家的帮助。