Реагировать, не передавая реквизит компоненту

#reactjs #react-props

#reactjs #реагировать-реквизит

Вопрос:

Я только начал изучать React и пытаюсь передать реквизит дочернему компоненту, как я видел во многих руководствах и документах react. Но я не вижу никаких реквизитов, переданных в моем дочернем компоненте. У меня есть installed React Developer инструменты в Chrome

Мой код выглядит следующим образом:

App.js

 import React, { Component } from 'react';
import './App.css';
import Movies from './Components/Movies';
import GetMovies from './Data/MoviesServie';

class App extends Component {
  constructor() {
    super();
    this.state = {
      movies: []
    };
  }

  componentDidMount() {
    const movies = [...GetMovies()];
    this.setState({ movies });  // 1. setting state
  }

  render() {
    return <Movies movie={this.state.movie} />; // NOT WORKING
  }
}

export default App;
  

Я также попробовал ведение журнала в консоли и обнаружил, что следующие вещи вызываются последовательно

  • вызван конструктор (очевидно)
  • визуализация
  • componentDidMound // здесь я устанавливаю состояние, но по-прежнему регистрируется пустой массив
  • рендеринг (снова рендеринг с состоянием задается массивом объектов)

Но когда я вижу реквизиты в <Movies /> компоненте, я ничего там не вижу. Реквизит там нулевой / пустой.

Я не знаю, в чем проблема, в каждом руководстве показан метод, который я использую здесь.

Комментарии:

1. Вы передаете movie вместо movies .

Ответ №1:

Вы пропустили букву

Изменить return <Movies movie={this.state.movie} />;

Для return <Movies movie={this.state.movies} />;

Комментарии:

1. У меня та же проблема. Я уже проверяю орфографию, и все правильно, но все равно вместо моего ожидаемого значения передается пустая строка. Это всего лишь страница Hello World, с которой я ее передал ReactDOM.render() . почему это не передается в пользовательский интерфейс? jsfiddle.net/y1cmgt0e/1