gpt4 book ai didi

reactjs - 独立组件react和redux之间传递数据

转载 作者:行者123 更新时间:2023-12-03 13:56:17 25 4
gpt4 key购买 nike

我对 React 和 Redux 很陌生。我正在尝试将数据从一个组件传递到另一个组件。但没有父子关系,相互独立。谁能帮我做到这一点?下面是我的代码。

export class EmpSearch extends React.Component {
constructor(props) {
super(props);
this.state = {
Empnumber: ''
};
}

updateEmpNumber(e) {
this.setState({Empnumber: e.target.value});
}

render() {
return (
<div className="row">
<form>
<div className="form-group">
<label htmlFor="Empnumber">Emp Number</label>
<input type="text" className="form-control" id="Empnumber" placeholder="Emp Number" value={this.state.Empnumber} onChange={this.updateEmpNumber.bind(this)}/>
</div>
</form>
</div>
);
}
}

function mapStateToProps(state){
return{
Empnumber: state.Empnumber
};
}

export default connect(mapStateToProps)(EmpSearch);

另一个文件是我想要发送 EmpNumber 的位置,

class EmpDetail extends React.Component {
render() {
return (
<div className="container">
<input type="text"/>
</div>
);
}
}

export default EmpDetail;

最佳答案

好的,这是一个例子。我假设您已经配置了所有 Redux 存储,即创建的存储、rootReducer 等...因为这完全是一个单独的帖子。

所以基本的想法是,当你想要更新你的 Redux 存储状态时,你分派(dispatch)一个actionreducer并发送一个有效负载数据随之而来。这听起来很令人困惑,但本质上它只是告诉 reducer 你想要做什么,即“嘿 reducer ,我希望你 UPDATE_EMP_NUMBER,这里是数据”。

reducer 基本上只是一个巨大的 switch 语句,如下所示,它只是根据给定的操作返回状态的新部分。

我再次对你的架构、商店等一无所知,所以这都是基于假设的,但对于你来说它可能是什么样子的。

reducer

export default function employeeReducer(state = [], action) {
switch (action.type) {
case UPDATE_EMP_NUMBER:
{
const Empnumber = action.payload;
return {
...state,
Empnumber
};
}
case ANOTHER_ACTION:
{
// etc...
}
default:
return state;
}
}

考虑到上述内容,您可以像这样更新代码。

EmpSearch

export class EmpSearch extends React.Component {
// Not needed anymore as state going to Redux and not local component state
/*
constructor(props) {
super(props);
this.state = {
Empnumber: ''
};
}
*/

updateEmpNumber(e) {
// No need to set state here as you are now passing this data to Redux store
// this.setState({Empnumber: e.target.value});

// Instead we will dispatch an action and send the empNumber to the reducer
this.props.dispatch({
type: 'UPDATE_EMP_NUMBER',
payload: e.target.value
});
}

render() {
return (
<div className="row">
<form>
<div className="form-group">
<label htmlFor="Empnumber">Emp Number</label>
<input type="text" className="form-control" id="Empnumber" placeholder="Emp Number" value={this.props.Empnumber} onChange={this.updateEmpNumber.bind(this)}/>
</div>
</form>
</div>
);
}
}

function mapStateToProps(state){
return {
Empnumber: state.Empnumber
}
}

export default connect(mapStateToProps)(EmpSearch);

然后您的 EmpDetail 类只需要连接到商店(或将数据作为 Prop 传递,但连接起来更容易)。

EmpDetail

class EmpDetail extends React.Component {
render() {
const empNumber = this.props.Empnumber;
return (
<div className="container">
Empnumber = {empNumber}
</div>
);
}
}

function mapStateToProps(state){
return {
Empnumber: state.Empnumber
}
}

export default connect(mapStateToProps)(EmpDetail);

我真的希望这能有所帮助,当你看不到这将在哪里结束时,很难解释这一点!

关于reactjs - 独立组件react和redux之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com