0
我有一個使用反應 - 終極版connect
這個組件:轉換使用連接到容器組件無狀態組件 - 優化
let Vepo = (props) => (
<Container >
<Header style={styles.header}>
<Left>
<Button transparent>
</Button>
</Left>
<Body>
<Title style={styles.title}>Search</Title>
</Body>
<Right>
</Right>
</Header>
<Container style={styles.container}>
<ScrollView >
<Keywords />
<Categories />
</ScrollView>
</Container>
</Container>
)
Vepo = connect(
null,
null
)(Vepo)
export default Vepo
而且我只是爲了方便的使用生命週期方法它轉換成一個容器組件,而不connect
:
class Vepo extends Component {
componentDidMount() {
const { store } = this.context
this.unsubscribe = store.subscribe(() => {
this.forceUpdate()
console.log(store)
})
console.log(store)
}
componentWillUnmount() {
this.unsubscribe()
}
render() {
return(
<Container >
<Header style={styles.header}>
<Left>
<Button transparent>
</Button>
</Left>
<Body>
<Title style={styles.title}>Search</Title>
</Body>
<Right>
</Right>
</Header>
<Container style={styles.container}>
<ScrollView >
<Keywords />
<Categories />
</ScrollView>
</Container>
</Container>
)}
}
Vepo.contextTypes = {
store: React.PropTypes.object
}
export default Vepo
但是我剛剛從SO回答中看到,forceUpdate()
是不必要的破解。
我需要做什麼componentDidMount
和componentWillUnmount
有一個高性能的組件?訂閱是否必要?如果我只刪除this.forceUpdate()
它會成爲一個高性能組件嗎?
謝謝,但如果是我提到我需要的生命週期方法? – BeniaminoBaggins
我已經更新了答案,並將它們添加回來。我刪除了他們,因爲他們不需要:)。將所有商店添加到一個組件中,如代碼,並不是一個好主意。 –