我想在react中访问另一个子组件中一个子组件的值

阿尼鲁德·辛格拉(Anirudh Singla)

下面是App.js文件

import React,{Component} from 'react'
//import logo from './logo.svg';
import './App.css'
import InputComponent from "./components/InputComponent";
import ResultComponent from "./components/ResultComponent";


class App extends Component {
  render()
    {
        return (
            <div className="App">
                <InputComponent />
                <ResultComponent/>
            </div>
        );
    }
}

export default App;

下面是InputComponent

import React,{Component} from "react";
import axios from 'axios';
class InputComponent extends Component{
    constructor(props) {
        super(props)

        this.state = {
            owner : "",
            repo : "",
        }
    }

    //here event.target.value is setting value of target to this owner
    ownerName = (event) => {
        this.setState({
            owner:event.target.value
        })
    }

    //here event.target.value is setting value of target to this repo
    repoName = (event) => {
        this.setState({
            repo:event.target.value
        })
    }




    render(){
        //let submit = this.props;
        let {items} = this.state;
        return(
            <div>
                <p>The current Owner is {this.state.owner} and the current Repo is {this.state.repo}</p>
                <input type='text' onChange={this.ownerName} value={this.state.owner} placeholder='Enter Username' className='inputFields'/>
                <br/>
                <input type='text' onChange={this.repoName} value={this.state.repo} placeholder='enter Repository' className='inputFields'/>
                <br/>

            </div>
        );
    }
}

export default InputComponent;

以下是结果组件

import React,{Component} from "react"
import axios from "axios";

class ResultComponent extends Component{
    constructor() {
        super()
        this.state = {
            items: []
        }
        this.apiFetch=this.apiFetch.bind(this)
    }

    apiFetch = () => {
        axios.get(`https://api.github.com/repos/${this.props.owner}/${this.props.repo}/issues`)
            .then(response => {
                console.log(response)
                this.setState({
                    items:response.data,

                })
            })
            .catch(error => {
                console.log(error)
            })
    }


    render(){
        let {items} = this.state;
        return(
            <div className='submit'>
                <button onClick={this.apiFetch}>Fetch Results</button>
                <ul>
                    {items.map(item=>(
                            <li key={item.id}>
                                Issue-title: {item.title}
                            </li>
                        )
                    )}
                </ul>
            </div>
        );
    }
}

export default ResultComponent

我想从URL部分'''axios.get(https://api.github.com/repos/${this.props.owner}/${this.props.repo}/issues)'''的ResultComponent中的InputComponent中访问owner,repo的值,但无法执行此操作,任何人都可以帮助我做错什么。我无法弄清楚我是React新手。

SanjiMika

通常,有在React组件之间传递数据的选项:

  1. 从父母到孩子使用道具
  2. 使用回调从孩子到父母
  3. 在兄弟姐妹之间:(i)结合以上两种方法(ii)使用Redux(iii)使用React的Context API

  4. 使用HOC之类的设计模式或渲染Props在React组件之间共享代码(渲染代码abtrait =>可重用的良好实践)

在您的情况下,使用设计模式渲染道具是不错的选择。例如,我提出一个代码示例:

class InputComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      owner : "",
      repo : "",
    }
  }

  //here event.target.value is setting value of target to this owner
  ownerName = (event) => {
      this.setState({
          owner:event.target.value
      })
  }

 //here event.target.value is setting value of target to this repo
  repoName = (event) => {
      this.setState({
          repo:event.target.value
      })
  }

  render() {
    return (
       <input type='text' onChange={this.ownerName} value={this.state.owner} placeholder='Enter Username' className='inputFields'/>

        {/*
          use the `render` prop to dynamically determine what to render.
        */}
        {this.props.render(this.state)}
      </div>
    );
  }
}

class WithInputComponent extends React.Component {
  render() {
    return (
      <div>
        <InputComponent render={dataInput => (
          <ResultComponent  dataInput={dataInput} />
        )}/>
      </div>
    );
  }
}

这里的链接更详细:

https://en.reactjs.org/docs/render-props.html

https://towardsdatascience.com/passing-data-between-react-components-parent-children-siblings-a64f89e24ecf

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于另一个子帧

来自分类Dev

访问VBA中另一个子对象内的对象字段

来自分类Dev

在MATLAB中的另一个子图中绘制一个子图

来自分类Dev

从另一个子执行子

来自分类Dev

如何在VueJS中将值从一个子组件传递到另一个子组件?

来自分类Dev

使用useReducer调度一个子组件中的操作并更新另一个子组件中的状态

来自分类Dev

Vue.js:将数据从一个子组件传递到具有相同父组件的另一个子组件吗?

来自分类Dev

从另一个子域访问Cookie

来自分类Dev

如何在React中将数据值从一个子组件传递到另一个子组件?

来自分类Dev

将点击事件从一个子组件传递到另一个子组件

来自分类Dev

在React.Js中创建一个组件作为另一个组件的子组件

来自分类Dev

为什么我的子菜单与另一个子元素重叠?

来自分类Dev

从另一个访问一个子域

来自分类Dev

另一个子查询问题

来自分类Dev

在XSLT中,如何根据另一个子节点的值显示一个子节点的值

来自分类Dev

如何从一个单独的子组件修改一个子组件的道具?

来自分类Dev

如何从Sitecore中的另一个子布局访问子布局控件?

来自分类Dev

如何基于事件使用React将一个子react / html组件替换为另一个子组件?

来自分类Dev

从另一个子窗体访问子窗体中的控件

来自分类Dev

VBA EXCEL:如何在另一个子例程中调用一个子例程?

来自分类Dev

如何从访问中另一个子窗体中打勾的组合框中过滤一个子窗体?

来自分类Dev

如何访问另一个子组件中插槽的内容

来自分类Dev

如何从子组件访问 Angular 4 中的另一个子组件

来自分类Dev

当另一个组件的子组件的状态在 react 中改变时触发事件

来自分类Dev

想要将值从子组件传递给父组件,然后将这些值传递给另一个子组件

来自分类Dev

如何将回调从一个子组件传递到另一个

来自分类Dev

如何知道另一个子组件中一个子组件的事件

来自分类Dev

React Native ScrollView - 如何从另一个子组件按钮滚动到子组件?

来自分类Dev

如何将子组件路由到另一个子组件

Related 相关文章

  1. 1

    基于另一个子帧

  2. 2

    访问VBA中另一个子对象内的对象字段

  3. 3

    在MATLAB中的另一个子图中绘制一个子图

  4. 4

    从另一个子执行子

  5. 5

    如何在VueJS中将值从一个子组件传递到另一个子组件?

  6. 6

    使用useReducer调度一个子组件中的操作并更新另一个子组件中的状态

  7. 7

    Vue.js:将数据从一个子组件传递到具有相同父组件的另一个子组件吗?

  8. 8

    从另一个子域访问Cookie

  9. 9

    如何在React中将数据值从一个子组件传递到另一个子组件?

  10. 10

    将点击事件从一个子组件传递到另一个子组件

  11. 11

    在React.Js中创建一个组件作为另一个组件的子组件

  12. 12

    为什么我的子菜单与另一个子元素重叠?

  13. 13

    从另一个访问一个子域

  14. 14

    另一个子查询问题

  15. 15

    在XSLT中,如何根据另一个子节点的值显示一个子节点的值

  16. 16

    如何从一个单独的子组件修改一个子组件的道具?

  17. 17

    如何从Sitecore中的另一个子布局访问子布局控件?

  18. 18

    如何基于事件使用React将一个子react / html组件替换为另一个子组件?

  19. 19

    从另一个子窗体访问子窗体中的控件

  20. 20

    VBA EXCEL:如何在另一个子例程中调用一个子例程?

  21. 21

    如何从访问中另一个子窗体中打勾的组合框中过滤一个子窗体?

  22. 22

    如何访问另一个子组件中插槽的内容

  23. 23

    如何从子组件访问 Angular 4 中的另一个子组件

  24. 24

    当另一个组件的子组件的状态在 react 中改变时触发事件

  25. 25

    想要将值从子组件传递给父组件,然后将这些值传递给另一个子组件

  26. 26

    如何将回调从一个子组件传递到另一个

  27. 27

    如何知道另一个子组件中一个子组件的事件

  28. 28

    React Native ScrollView - 如何从另一个子组件按钮滚动到子组件?

  29. 29

    如何将子组件路由到另一个子组件

热门标签

归档