开发者问题收集

将值传递给另一个组件时未定义“Items”错误

2019-05-07
85

当我尝试将状态传递给另一个组件时,我收到 ./src/App.js 第 27 行:'Items' 未定义 react/jsx-no-undef

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

class App extends Component {
    // Added this:
    constructor(props) {
        super(props);
        // Assign state itself, and a default value for items
        this.state = {
            items: []
        };

    }
    componentWillMount() {
        axios.get('https://api.opendota.com/api/proMatches').then(res => {
        this.setState({ items: res.data });

        });
    }
    render() {

        return (
            <div className="app">
            <Items items={this.state.items} />  
            </div></blink></blink>
        );
    }
}

export default App;
3个回答

您未先导入名为 Items 的组件,因此无法尝试使用该组件:

<Items items={this.state.items} />

您使用的每个组件都必须先导入:

import { Items } from "DIRECTORY"
AdamGold
2019-05-07

错误:- (1) 导入 Items 组件 (2) 使用 componentDidMount() 而不是 componentWillMount() (3) 在 JSX 中使用三元运算符 this.state.items.length > 0 在获得响应后显示项目

import React, { Component } from 'react';
import axios from 'axios';
import Items from './Items';

class App extends Component {
    // Added this:
    constructor(props) {
        super(props);
        // Assign state itself, and a default value for items
        this.state = {
            items: []
        };

    }
    componentDidMount() {
        axios.get('https://api.opendota.com/api/proMatches').then(res => {
        this.setState({ items: res.data });

        });
    }
    render() {

        return (
            <div className="app">
            {
                this.state.items.length > 0 ?
                <Items items={this.state.items} />  : null
            }
            </div></blink></blink>
        );
    }
}

export default App;
Engineer
2019-05-07

App 是顶级组件,Items 是子组件。要使用任何子组件或传递任何类型的道具或状态,必须先导入它。

由于您正在使用状态,并且如果子组件 Items 由于任何更改而重新渲染,则 APP 组件的状态也将重置,因此可能存在另一个问题。

Pramod Kumar Singh
2019-05-09