2015-10-05 80 views
0

如何将Redux连接到父组件下几层的子组件?我不知道如何通过store成道具没有它炸毁。无法将Redux连接到孙组件

我没有使用IronRouter,而是使用Redux 3和React 0.13。这里有一个例子:

const SearchBar = React.createClass({ 
    render() { 
    return <div> {this.props.text} </div>; 
    } 
}); 


function mapStateToProps(state) { 
    return {text: state.search.text}; 
} 

_SearchBar = connect(mapStateToProps)(SearchBar); 

找不到“存储”在任何情况下或“连接(搜索栏)”的道具。将根组件包装在<Provider>中,或者将“store”作为道具显式传递给“Connect(SearchBar)”。

回答

4

你要么需要向下传递店通过中间组件一路,或类似的消息称,利用在该应用程序的顶部<Provider>组件,它会自动传递下来。

+1

嗯有趣的后裔。我尝试在'layout'组件中使用'',并且始终抱怨'store'没有找到,即使它已被定义。我再试一次。我怎么能通过“商店”作为直接连接的道具? – SkinnyG33k

+1

@ SkinnyG33k你不会将它传递给'connect',你会将它作为一个道具传给你渲染的组件('connect'的返回值)。使用''真的好多了;请参阅https://github.com/rackt/react-redux/blob/master/docs/api.md#remarks –

2

1)总结你的根组件在<Provider store={store}></Provider>

class Root extends React.Component { 
    render() { 
    return (
     <Provider store={store}> 
     <YourAppComponent /> 
     </Provider> 
    ) 
    } 
} 

Provider通店通过作出反应的context

2)你connect()现在应该工作:),但只有当所有的连接组件的<YourAppComponent />