当前位置: 首页 > 面试题库 >

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

邢昂然
2023-03-14
问题内容

我对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等…,因为这是一个单独的帖子。

因此,基本的想法是,当你想更新你的终极版商店状态你 派遣 一个 动作减速机
,并与它一起发送数据的有效载荷。这听起来令人困惑,但从本质上讲,它只是告诉减速器您想要做什么,即“嘿减速器,我想让您进行UPDATE_EMP_NUMBER,这是数据”。

基本上,reducer只是下面的大量switch语句,它只是根据给定的操作返回新的状态部分。

同样,我对您的体系结构,商店等一无所知,因此这都是基于假设的,但是这对您来说可能是什么样子。

减速器

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类仅需要连接到商店(或将数据作为道具传递,但更容易将其连接)。

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);

我真的希望这会有所帮助,当您看不到最终结果时,很难解释这一点!



 类似资料:
  • 对于Reaction和Redux,我是个新手。我试图将数据从一个组件传递到另一个组件。但它没有亲子关系,相互独立。有人能帮我做这件事吗?下面是我的代码。 另一个文件是我想要发送的EmpNumber在下面,

  • 问题内容: 好的,我是React的新手,需要阅读/引用HTML元素数据属性甚至HTML标记中的内容方面的帮助- 通常使用普通JS(这就是我在React应用程序中所做的事情),我这样读: 我有一个叫做Table的功能组件,我这样使用: 其中rows属性是我要检索的数据。我的表生成了具有几行的查找。单击后,我为每一行都有一个“编辑” CTA,我打开了一个模态,在其中传递要为每一行编辑的数据。CTA的O

  • 我正在学习通过教程在父组件和子组件之间传递数据。我仔细检查了我的代码,仍然没有找出错误。 我的index.js Home.js 按钮更改链接onClick事件正在调用changeLink函数,该函数将新链接传递给props。 错误:-

  • 问题内容: 我有一个调用会弹出一个的,以便用户可以选择目录。这些都是单独的类。从中传递值的正确方法是什么,以便我可以在中显示目录的路径? 编辑:更新了问题。 问题答案: 这是一个不完整的示例,但我想可以使您了解如何实现所需的目标。重要的一点是引用要在其中进行选择的属性,例如 参见下面如何将其放置在代码中: 希望对您有所帮助,对不起您没有提供完整的示例。 编辑 本质上,我们没有将任何参数传递给Abs

  • 我的Navbar组件有2个子组件。每个组件都有自己的状态。在其组成部分内工作正常的国家。如何更新这两个状态从假到真的同时,当两个功能onclick将被执行? 主组件导航栏 列表菜单组件 汉堡包成分

  • 问题内容: react redux中的component和container有什么区别? 问题答案: 是React API的一部分。组件是描述React UI的一部分的类或函数。 容器 是React组件的非正式术语,该组件被Redux存储。容器接收Redux状态更新和操作,并且它们通常不呈现DOM元素。他们将渲染委托给 演示 性子组件。 有关更多详细信息,请阅读Dan Abramov的presen