如何从React Redux中的子组件进行调度
How can I dispatch from child components in React Redux?
我的服务器有这样的代码:
<ReactRedux.Provider store={store}><Layout defaultStore={JSON.stringify(store.getState())}/></ReactRedux.Provider>
CCD_ 2明显具有更多的嵌套成分。
我有一门更深层次的课:
import React from 'react';
export default React.createClass({
render: function(){
var classes = [
'js-select-product',
'pseudo-link'
];
if (this.props.selected) {
classes.push('bold');
}
return (
<li className="js-product-selection">
<span onClick={this.props.onClick} className={classes.join(' ')} data-product={this.props.id}>{this.props.name}</span>
</li>
);
}
});
比起this.props.onClick
,我真正想做的是调度一个事件来设置reducer中的状态。我在网上做过一些关于上下文的事情,但我得到了褒贬不一的评价,因为这个功能过去或不会消失。
编辑我看到了这个连接方法,但我可以发誓我不会在children组件中使用connect
。
您太沉迷于子组件了。你应该构建你的应用程序,使你有连接的组件和非连接的组件。非连接组件应该是无状态的,本质上是纯函数,通过props接受它们的所有需求。连接的组件应该使用connect
函数将redux状态映射到props,将redux调度器映射到prop,然后负责将这些props传递给子组件。
应用程序中可能有很多连接的组件,也可能有很多未连接的组件。这篇文章(由redux的创建者撰写)更详细地讨论了它,并谈到了非连接(dumb)组件负责UI的实际显示,连接(smart)组件负责组成非连接组件。
一个例子可能是(使用一些较新的语法):
class Image extends React {
render() {
return (
<div>
<h1>{this.props.name}</h1>
<img src={this.props.src} />
<button onClick={this.props.onClick}>Click me</button>
</div>
);
}
}
class ImageList extends React {
render() {
return (
this.props.images.map(i => <Image name={i.name} src={i.src} onClick={this.props.updateImage} />)
);
}
}
const mapStateToProps = (state) => {
return {
images: state.images,
};
};
const mapDispatchToProps = (dispatch) => {
return {
updateImage: () => dispatch(updateImageAction()),
};
};
export default connect(mapStateToProps, mapDispatchToProps)(ImageList);
在该示例中,ImageList
是连接组件,而Image
是非连接组件。
过去有人建议尽量限制连接的组件。参见示例:
https://github.com/reactjs/redux/issues/419
https://github.com/reactjs/redux/issues/419#issuecomment-178850728
无论如何,这对于将一部分状态委派给组件来说确实更有用。如果这对您的情况有意义,您可以这样做,或者如果您不想传递调用dispatch()
的回调,如果您愿意,您可以传递存储或向下调度层次结构。
- React重新渲染但未显示正确的组件
- 不能从angular2中的子组件指定父组件中的数组
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- React组件等待所需道具进行渲染
- 如何创建带有插槽的vue js组件预加载程序
- KnockoutJS-组件-多个实例
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 如何在salesforce aura闪电组件中使用jQuery.val()
- 为react组件传递道具的最佳方式
- [Vue warn]:未能解析组件
- 调度没有'无法立即更新组件
- React/flux - 子组件用户事件 - 是否应通过调度程序路由所有内容
- 如何从React Redux中的子组件进行调度
- 使用d3.在d3组件之间调度广播事件
- React Redux-在没有连接的情况下调用调度(不是来自React组件)
- React-Router:为什么 组件的 onClick 处理程序不会调度我的操作