[英]React/Redux - Passing props from one container to another
I'm fairly new to Redux so if my implementation is wrong, please advice. 我是Redux的新手,所以如果我的实现错误,请提出建议。
In my current app, I have two containers. 在我当前的应用中,我有两个容器。 Essentially the information that I want is: from one of the container, I'd like to pass a prop to the other container. 本质上,我想要的信息是:从一个容器中,我想将一个道具传递给另一个容器。
Specifically, I want myArray variable from Board to pass it down to the Controller container. 具体来说,我希望Board的 myArray变量将其向下传递到Controller容器。
Here's what I've done so far: 到目前为止,这是我所做的:
containers/board 容器/板
class Board extends Component {
constructor(props){
super(props);
this.onClickToggle = this.onClickToggle.bind(this)
}
onClickToggle(coord){
this.props.onCellClick(coord)
}
componentDidMount() {
}
render(){
const height = this.props.grid.height
const width = this.props.grid.width
let rows = [];
let myArray = []
for (let y = 0; y < height; y++) {
let rowID = `row${y}`;
let bin = [];
let obj = {}
for (let x = 0; x < width; x++){
let cellID = `${y}-${x}`;
let index = y * width + x //index of grid;
let status = this.props.grid.cells[index];//0 = dead, 1 = alive
bin.push(
<Cell
key={x}
id={cellID}
status={status}
onClick={() => this.onClickToggle({x,y})}
/>)
obj[cellID] = status
}
rows.push(<tr key={y} id={rowID}>{bin}</tr>)
myArray.push(obj);
<Controller coord={myArray} />
}
return(
<div className="container">
<div className="row">
<div className="col s12 board"></div>
<table id="simple-board">
<tbody>
{rows}
</tbody>
</table>
</div>
</div>
)
}
}
function mapDispatchToProps(dispatch){
return bindActionCreators({onCellClick}, dispatch)
}
function mapStateToProps(state) {
return {
grid: state.grid
};
}
export default connect(mapStateToProps,mapDispatchToProps)(Board)
containers/controller 容器/控制器
class Controller extends Component {
constructor(props){
super(props);
this.test = this.test.bind(this);
}
componentDidMount() {
}
test(){
// this.props.start
console.log(this.props)
}
render(){
return(
<div className="container">
<div className="row">
<div className="col s12 controller">
<a onClick={this.test} className="waves-effect waves-light btn">Start</a>
<a onClick={this.props.clear} className="waves-effect waves-light btn">Clear</a>
<a onClick={this.props.randomize}className="waves-effect waves-light btn">Randomize</a>
</div>
</div>
</div>
)
}
}
function mapDispatchToProps(dispatch){
return bindActionCreators({clear,randomize,start}, dispatch)
}
export default connect(null,mapDispatchToProps)(Controller)
I understand how to pass props to components, but I haven't faced a situation of passing props from one container to another one. 我知道如何将道具传递到组件,但是我还没有遇到过将道具从一个容器传递到另一个容器的情况。
Remove <Controller coord={myArray} />
from the for loop. 从for循环中删除<Controller coord={myArray} />
。 You can nest the controller inside return statement like below, to access its values. 您可以将控制器嵌套在return语句中,如下所示,以访问其值。
containers/board 容器/板
return(
<div className="container">
<Controller coord={myArray} />
<div className="row">
<div className="col s12 board"></div>
<table id="simple-board">
<tbody>
</tbody>
</table>
</div>
</div>
)
containers/controller 容器/控制器
test(){
// this.props.start
console.log(this.props.coord)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.