[英]React weird rendering behavior
即使打印items
在返回函數之前記錄了一個填充的數組 ,它也不會真正呈現任何內容。 我知道一個事實,即正確顯示html並不是問題。 因此,我變得可疑並在返回函數中對其進行了字符串化處理,以查看是否確實存在正在記錄的數據,並且令我恐懼的是,我意識到它不是。 如代碼所示,在return函數中,我得到一個空數組!
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));
因此它應該始終可以訪問更新的數據。
PS:我知道比較聰明的組件,而不是使用ReactRedux,而是嘗試並嘗試了一些不同的方法來引起好奇。 這是一種自我強加的“研究”代碼。 這不是用於生產或項目。
從map
函數返回div
:
items.map(item =>
return <div key={item.id}>
item.name
</div>
)
嘗試轉義要呈現的內容:
items.map(item =>
<div key={item.id}>{item.name}</div>
)
我的代碼有兩個問題:
react16 +
return [
<span>{JSON.stringify(items)} </span>,
...items.map(item =>
<div key={item.id}>
{item.name}
</div>
)
]
<react16
return (
<div>
<span>{JSON.stringify(items)} </span>
{items.map(item =>
<div key={item.id}>
{item.name}
</div>
)}
</div>
)
看來問題出在直接調用render。 而是調用forceUpdate()可以正常工作。 我不是100%為什么會發生這種情況,但我懷疑獨自調用render並沒有多大意義,因為可能需要在React管道的React上下文中調用它。 我可能會很不舒服,如果是的話,請標記我,並描述一下我目前能夠做的更好的事情。
感謝大家的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.