您可以通過終極版做到這一點,仍然避免更新所有組件。是的,你可以調整你的當前組件是否應該更新。這裏的示例代碼
class VisibleTodos extends Component{
componentDidMount(){
this.unsubscribe = store.subscribe(() => {
this.forceUpdate();
});
}
componentWillUnmount() {
this.unsubscribe();
}
render(){
const state = store.getState();
return(
<TodoList
todos = {getVisibleTodos(
state.todos,
state.visibilityFilter
)}
onTodoClick = {id => {
store.dispatch({
type: 'TOGGLE_TODO',
id
})
}}
>
</TodoList>
)
}
}
與反應,終極版庫同樣的事情會做的
const mapStateToProps = (state) => {
return {
todos: getVisibleTodos(
state.todos,
state.visibilityFilter
)
};
};
const mapDispatchToProps = (dispatch) => {
return {
onTodoClick: (id) => {
dispatch({
type: 'TOGGLE_TODO',
id
});
}
};
};
const { connect } = ReactRedux;
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList);
所以,想象一下有與此類似,並在前者的情況下其他幾個組件,調用this.forceUpdate()
和this.unsubscribe()
會是多餘的。因此,它使我們免於手動工作。
通過react-redux,您可以使用'connect'功能將任何組件連接到應用商店。如果沒有連接,你必須手動完成。而且,一般來說,任何圖書館的目的都是爲了減少手工工作量。 –
由於您在Redux中創建的任何訂閱都會在每次狀態更改時被調用,無論您是否需要在該狀態片上進行操作。 'react-redux'允許我們指定某些組件應該訂閱的商店的哪些部分,因此我們只需「訂閱」我們想要的更改。 – lux