- 在es6寫法中,初始化props不再用
getDefaultProps方法,而應該使用
static defaultProps {
xxx: 'xxx'
}
- 在es6寫法中,初始化state不再用
getInitialState方法,而應該使用
constructor(props) {
super(props);
this.state = {xxx: 'xxx'};
//在這里可以定義一些你自己需要的屬性
}
組件可以不繼承component,但是無法使用生命周期函數(shù)??梢允褂胷ender()方法。
-
關于constructor()方法
react文檔中的這段話的意思是說如果你不實現(xiàn)constructor方法的話,你就無法使用this.props對象,而且你得在constructor中最先調(diào)用super(props)。如果你不需要在constructor中初始化state,那么你完全可以不實現(xiàn)constructor方法。
flex布局中為什么ajustifyContent設置的屬性不生效?因為包裹容器的View需要設置height屬性才會生效。
在mixin中寫的生命周期相關的回調(diào)都會被合并,也就是他們都會執(zhí)行,而不會互相覆蓋掉。
比如 你在mixin中可以定義 componentDidMount 來初始化組件,他不會覆蓋掉使用這個mixin的組件。實際執(zhí)行的時候,會先執(zhí)行 mixin 的 componentDidMount ,最后執(zhí)行組件的 componentDidMount 方法。
需要注意的是,因為mixin的作用是抽離公共功能,不存在渲染dom的需要,所以它沒有render方法。如果你定義了render方法,那么他會和組件的render方法沖突而報錯。
同樣,mixin不應該污染state,所以他也沒有 setState 方法。mixin應該只提供接口(即方法),不應該提供任何屬性。mixin內(nèi)部的屬性最好是通過閉包的形式作為私有變量存在。在任何模塊文件內(nèi)部,可以使用__dirname變量獲取當前模塊文件所在目錄的完整絕對路徑。
react自定義的組件名需要大寫,否則無法解析。
