javascript - ReactJS - 将数据从子组件传递到其父组件

标签 javascript reactjs jsx

我在应用程序中具有以下组件结构:

class Car extends Component {
    constructor() {
        super();
        this.state = {
            cars: [],
            ...
        }
    }
    componentDidMount() {
        axios.get('/api/cars')
            .then((response) => {
                this.setState({cars: response.data});
                console.log('cars: ', cars);
            }).catch(err => {
                console.log('CAUGHT IT! -> ', err);
            });
    }
    render() {
      return (
        ...
        <CarAddNew />
        <CarSearch />
        <CarList cars={this.state.cars} />
      )
    }
}

然后

export default class CarSearch extends Component {
    constructor(){...}
    handleSearchSubmit(e) {
        e.preventDefault();
        ..
        axios.post('/api/cars/search', searchCars)
            .then(response => {
                console.log('response.data: ', response.data);
            })
    }
    render() {
        return(
          ... search form ...
        )
    }

当我通过 CarSearch 组件在数据库中搜索数据时,它会获取并加载正确的数据,这太棒了。但是,如何将这个"new"找到的数据传递给 CarList 组件,以便在页面上显示?

最佳答案

我会做的是:

class Car extends Component {
    constructor() {
        super();
        this.state = {
            cars: [],
            ...
        }
    }
    componentDidMount() {
        axios.get('/api/cars')
            .then((response) => {
                this.setState({cars: response.data});
                console.log('cars: ', cars);
            }).catch(err => {
                console.log('CAUGHT IT! -> ', err);
            });
    }
    handleSearch = () => {
        axios.post('/api/cars/search', searchCars)  // not sure where you are getting searchCars from, but you should get the idea
            .then(response => {
                this.setState({cars: response.data})
                console.log('response.data: ', response.data);
            })
    }

    render() {
      return (
        ...
        <CarAddNew />
        <CarSearch onSearch={this.handleSearch} />
        <CarList cars={this.state.cars} />
      )
    }
}


export default class CarSearch extends Component {
    constructor(){...}
    handleSearchSubmit(e) {
        e.preventDefault();
        this.props.onSearch() // I'm assuming you probably want to pass something here
    }
    render() {
        return(
          ... search form ...
        )
    }

关于javascript - ReactJS - 将数据从子组件传递到其父组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133076/

相关文章:

javascript - 在标题移回页面顶部后将文本保持在原位

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL on javascript objects

reactjs - 开 Jest 测试打开 react 选择菜单

javascript - React Js 从另一个顶级组件中提取变量

JavaScript : How to select elements within one instance of a react class?

javascript - 尝试迭代多层嵌套数组时不断出现 'does not have any construct or call signatures'

javascript - this.setState 无法正常运行

reactjs - JSX 仅映射数组中的第一个对象

javascript - 如果存在带有逻辑运算符的 js 注入(inject),将渲染/发送到 ReactDOM.render() 作为参数

javascript - 来自 HTML 表格的 D3.js