react-redux中的

所有容器組件都可以訪問 Redux store,所以可以手動監聽它。一種方式是把它以 props 的形式傳入到所有容器組件中。但這太麻煩了,因爲必須要用 store 把展示組件包裹一層,僅僅是因爲恰好在組件樹中渲染了一個容器組件。

建議的方式是使用指定的 React Redux 組件 <Provider> 來 魔法般的 讓所有容器組件都可以訪問 store,而不必顯示地傳遞它。只需要在渲染根組件時使用即可


<Provider store>使組件層級中的 connect()方法都能夠獲得 Redux store。正常情況下,你的根組件應該嵌套在 <Provider>中才能使用 connect()方法。

index.js

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import todoApp from './reducers'
import App from './components/App'

let store = createStore(todoApp)

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)
<Provider>的原理:使用用了react中的context屬性:
源碼如下:
class Provider extends Component{
	getChildContext(){
	  retrun {
		store:this.props.store
		};
	}
	render(){
	  return this.props.children;
	}
}
Provider.childContextTypes = {
	store:React.PropTypes.object
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章