即使使用Provider,也必须将每个React组件与redux连接起来?

时间:2016-11-05 22:59:16

标签: reactjs redux react-router

我的应用程序索引以:

开头
ReactDOM.render(
   <Provider store={store}>
       <Router history={browserHistory}>
           <Route path="/" component={App}>
               <IndexRoute component={Main} />
               <Route path="/search" component={MovieSearch} />
               <Route path="/movies" component={MovieList} />
           </Route>
       </Router>
  </Provider>,
  document.getElementById('root')
);

My Main.js: render() { return (<div>{this.props.children}</div> )}

当我访问URI时: / movies 在将组件连接到商店之前,MovieList道具保持未定义状态。它是否正确?我需要将每个组件连接到商店才能访问状态?没有这个,我无法从Main父道具中获得道具?

我真的需要调用mapStateToProps,有时需要mapDispatchToProps来访问状态和操作吗?

这是默认/良好做法吗?

1 个答案:

答案 0 :(得分:1)

答案是,

除非您拥有from .models import Job class JobListView(ListView): template_name="jobs/list.html" queryset = Job.objects.order_by('-created') paginate_by = 10 组件,否则您需要连接每个组件以使用layout

您可以查看one of my project。我使用page.js作为我的路由器。这很简单,也解决了我的目的。对于每个路由,我传递要渲染的组件的名称。因此,将加载redux页面,我连接redux并将状态作为layout传递给子组件。并基于props传递的render。我将在router

中呈现组件

使用layout是一种非常好的做法。它成为渲染所有组件的常见位置。

有用的链接:

<强> [更新]

您还应该查看Redux Router