這篇文章主要介紹了React中怎么實(shí)現(xiàn)Props反模式的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇React中怎么實(shí)現(xiàn)Props反模式文章都會有所收獲,下面我們一起來看看吧。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、蕪湖網(wǎng)絡(luò)推廣、微信小程序、蕪湖網(wǎng)絡(luò)營銷、蕪湖企業(yè)策劃、蕪湖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供蕪湖建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
之所以稱其為反模式是因?yàn)樵趃etInitialState中使用Props生成state會導(dǎo)致重復(fù)“來源信任”問題。并且還猶豫getInitialState函數(shù)只是在組件被第一次渲染時(shí)調(diào)用。也就是說當(dāng)該組件第二次再使用render渲染的時(shí)候,getInitialState函數(shù)不會再被調(diào)用。也就是說如果我們想通過第二次渲染改變Props的值從而改變State的值是不可能的。
下面我們來看一段代碼:
var MessageBox = React.createClass({
getInitialState: function() {
return {name: 'Mr. ' + this.props.name};
},
render: function() {
return
對于上面的例子,可以說就是一種反模式的運(yùn)用。如果我們想再次渲染組件MessageBox改變Props的name值。我們會發(fā)現(xiàn)div中的內(nèi)容不變的,依然是 Mr. Rogers而不是Mr. Onmpw。
ReactDOM.render(
document.getElementById('content')
);
ReactDOM.render(
document.getElementById('content')
);
所以說,對于上面的例子,div中直接使用this.props相對于this.state更好一些。
var MessageBox = React.createClass({
render: function() {
return
這個(gè)例子的結(jié)果就是在頁面上輸出 Mr. Onmpw。
ReactDOM.render(
document.getElementById('content')
);
如果我們再次渲染,那就會就會是Mr. Rogers。
上面介紹的情況就是Props在getInitialState中使用的反模式。當(dāng)然,如果我們能明確Props的用途,在getInitialState中使用也不會產(chǎn)生反模式的情況。比如,初始化一個(gè)值,該P(yáng)rop的值不會改變。
var Counter = React.createClass({
getInitialState: function() {
return {count: this.props.initialCount};
},
handleClick: function() {
this.setState({count: this.state.count + 1});
},
render: function() {
return
關(guān)于“React中怎么實(shí)現(xiàn)Props反模式”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“React中怎么實(shí)現(xiàn)Props反模式”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。