当前位置: 首页 > 知识库问答 >
问题:

reactjs在两个组件之间传输数据[重复]

何博涛
2023-03-14
import Info from Component2.jsx; 
... 
...
var dataInfo = "some info.. ";
<Info dataInfo={dataInfo} />
...
... 

请帮帮我。我试图在谷歌找到答案,但无法正确获得。

共有1个答案

马坚
2023-03-14

是的,您可以转移回父组件,我将给您一个例子来清楚地展示您如何做到这一点

假设您有一个名为component1的父表单,其中有一个作为子表单导入的表单,名为component2

如下:

import React, { Component } from 'react';
export default class Component2 extends Component{

constructor() {
    super();

    this.state = {
        UserName: '',
        email: ''
    };
    this.onSubmit = this.onSubmit.bind(this)
}

onSubmit(e){
    e.preventDefault();
    var field = {
        UserName:  this.state.UserName,
        email :   this.state.email,
        password:  this.state.password,
    }
    **this.props.onUpdate(field);**
}
onChange(e){
    this.setState({
        [e.target.name]: e.target.value
    });
}
render() {
    var UserNameError = **this.props.UserNameError**;
    var emailError = **this.props.emailError**;

    return(

        <div className="col-md-6 col-sm-6">
            <div className="title">Create Account</div>
            <Form onSubmit={this.onSubmit}>
                <div className="form-group">
                    <label>user Name</label>
                    <input onChange={this.onChange.bind(this)} value={this.state.UserName} name='UserName'/>
                    <span className="error is-visible">{UserNameError}</span>
                </div>
                <div className="form-group">
                    <label>Email</label>
                    <input onChange={this.onChange.bind(this)} value={this.state.email} name='email' />
                    <span className="error is-visible">{emailError}</span>
                </div>

                <Button className='btn submit'>Register</Button>
            </Form>
        </div>
    )
}}
import React, { Component } from 'react';
import Component2 from './Component2'
export default class Component1 extends Component{
    constructor() {
        super();
        this.state = {
            UserName: '',
            email: '',
            UserNameError:' UserNameError ',
            emailError:' emailError '
        };
    }
    onUpdate(val) {
        this.setState({
            email: val.email,
            UserName: val.UserName,
        });
        console.log(' onSubmit  ** email' + val.email + " UserName " + val.UserName )
    };
    render() {
        return(
            <div className="col-md-6 col-sm-6">
                <Component2 **UserNameError={this.state.UserNameError}** **emailError={this.state.emailError}** **onUpdate={this.onUpdate.bind(this)}**  />
            </div>
        )

    }
}
 类似资料:
  • 问题内容: 我在页面上有一个组件的两个实例(搜索字段),在它们之间有另一个组件(进行服务器调用的按钮),例如: 我要做的只是将一个未修改的参数从CardSearch字段传递到RunOnServer按钮,但是如果简单的话,我该死的。据此,我可以使用this.state.var作为道具,但是这样做可以在编译代码时给我’undefined.state.var’。React的官方文档并不出色。他们只是告诉

  • 我不明白为什么不能在父组件上获取数据。 我有父组件-Add Button,和子组件-addTasktBox。我想把头衔从孩子传给父母。 AddButton组件中可能存在错误-因为浏览器出现如下错误: “TypeError:\u this2.props.sendData不是函数” 只要看一下submit-input“onClick={this.handleClick}”(底部)——就可以开始传递我的

  • 问题内容: 我一直在遵循Android蓝牙通讯指南 为确切说明我要做什么,将两个设备配对后,每个设备(服务器和客户端)上都会打开两个不同的活动,其中服务器活动上我有不同的按钮,而客户端活动上只有一个textview。我希望能够按服务器设备上的按钮并将其显示在客户端上。 我设法在两个设备之间建立了连接,但现在我想发送无法执行的数据。 他们给出了以下代码进行数据传输: 但是这行会产生错误 并且在指南中

  • 我正试图将数据从第一个ViewController发送到第二个ViewController。 然后我尝试将它发送到我的另一个ViewController: 致命错误:在展开可选值时意外发现nil 我的第二个视图控制器:

  • 问题内容: 我有两个 -我有和同赛格瑞“模式” -我有与(回FirstVC): 我创建的委托为: 下一个: 我的函数,在此函数中,我的委托用作: FirstVC: 请帮助我解决这个问题。 问题答案: 1)您需要将委托设置为prepareForSegue: 更新: 2)设为可选