當您知道變量值將影響視圖時使用狀態。這在反應中尤爲重要,因爲每當狀態變量發生變化時(儘管虛擬DOM對此進行了優化,您應該儘量減少它),,但是在更改道具時不可以(您可以強制這樣做,但並不是真的需要)。
您可以使用道具來保存所有其他變量,您認爲可以在組件創建過程中將其傳遞到組件中。
如果你想創建一個名爲MyDropdown多選下拉例如
state = {
show: true,
selected:[],
suggestions:this.props.suggestionArr.filter((i)=>{
return this.state.suggestions.indexOf(i)<0;
})
}
props={
eventNamespace:'mydropdown',
prefix : 'm_',
suggestionArr:[],
onItemSelect:aCallbackFn
}
正如你所看到的,在狀態變量的對象會影響視圖某種方式或其他。 道具中的物體大多數應該在整個零部件生命週期中保持不變。所以這些對象可以是回調函數,用於命名空間事件或其他持有者的字符串。
所以,如果你想本身更新組件,你需要看看componentWillRecieveProps,componentWillUpdate,componentDidUpdate和componentShouldUpdate是如何工作的。或多或少,這取決於需求,您可以使用這些生命週期方法來確保渲染在組件內而不在父組件中。
這是不正確的。組件在其狀態或道具更改時重新呈現。 –