ReactJS - невозможно прочитать this.props.value для объекта состояния

Эрик

Я только начинаю изучать ReactJS и обнаружил ошибку при компиляции кода:

TypeError: невозможно прочитать значение свойства undefined

Ошибка возникает в этой строке: count: this.props.valueв файле. counter.jsx

Как видите, я попытался использовать console.log(this.props)функцию рендеринга counter.jsx, чтобы проверить, установлены ли реквизиты. Они установлены - поэтому я не знаю, почему я не могу получить к нему доступ в объекте состояния в моем классе Counter.

Вопрос: Что я делаю не так?

counter.jsx:

import React, { Component } from 'react';

class Counter extends Component {
    state = {
        count: this.props.value,
        tags: []
    };

    render(){
        console.log(this.props);
        return (<React.Fragment>
                    <span>{this.formatCount()}</span>
                </React.Fragment>
        );
    }

    formatCount(){
        var { count } = this.state;
        return count === 0 ? <h1>Zero</h1> : count;
    }
}
export default Counter;

index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import 'bootstrap/dist/css/bootstrap.css';

import Counters from './components/counters';

ReactDOM.render(<Counters />, document.getElementById('root'));
registerServiceWorker();

counters.jsx:

import React, {Component} from 'react';
import Counter from './counter';

class Counters extends Component {
    state = {
        counters: [
        {id: 1, value: 4},
        {id: 2, value: 0},
        {id: 3, value: 0},
        {id: 4, value: 0},
        ]
    };
    render(){
        return (
            <div>
            {this.state.counters.map(counter => (<Counter key={counter.id} value={counter.value} selected={true} />))}
            </div>
        );
    }
}

export default Counters;
Аруп Ракшит

thisin this.propsотносится к объекту, созданному JSX <Counter {...}/>. Итак, чтобы получить доступ thisк экземпляру Counterкласса, вам нужно использовать constructorфункцию.

constructor(props) {
  super(props);
  this.state = {
    count: props.value,
    tags: []
  };
}

То , что вы прямо сейчас , чтобы создать государство, указывает на Counterсам класс, а не его экземпляров, поэтому this.propsэто undefined. Вы можете сделать то же самое, но без constructorфункции, с помощью getDerivedStateFromPropsметода.

getDerivedStateFromPropsвызывается прямо перед вызовом метода рендеринга как при первоначальном монтировании, так и при последующих обновлениях. Он должен возвращать объект для обновления состояния или null, чтобы ничего не обновлять.

class Counter extends Component {
  state = {
    count: null,
    tags: []
  };

  static getDerivedStateFromProps(props, state) {
    return {
      count: props.value,
    }
  }

  // ...
}

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Передача props субкомпонентам Reactjs

Передача значения в props reactjs

значения состояния props в reactjs

Свойства по умолчанию для функционального компонента Reactjs с объектом props

Как рендерить части рендера в зависимости от props reactjs

Reactjs props теряется при создании маршрута

Передача props между компонентами Reactjs

reactJS - Как объединить в props?

Reactjs: невозможно получить доступ к значению props в компоненте без сохранения состояния

ReactJS: лучшая практика props и состояния

Передача функций через props из родительских состояний в ReactJS

Как передать props в мои компоненты в ReactJS

props не передаются маршрутами в компонентах в reactjs

Передача props в модальный пользовательский интерфейс Reactjs

Как props и состояние работают в REACTjs?

ReactJS Props Не определено

Props оказывается неопределенным в Reactjs

ReactJS устанавливает состояние другого класса через обратный вызов props

Как передать Props обработчику reactjs?

Предоставляет ли компоненту props как {... props} вместо myProp = {value} повторную визуализацию этого компонента?

Функция ReactJS Component вызывает this и props undefined

Невозможно прочитать свойство 'props' для null - Reactjs

Получите высоту от this.props.children в ReactJS

Как передать значение Props () в setState (), чтобы сделать модальную форму редактируемой с помощью ReactJs

синтаксис распространения "... this.props" в reactjs кажется странным

Что означает "... this.props" в ReactJS?

ReactJS props.title не отображается

Reactjs - как получить данные из дочернего компонента в onclick кнопки, переданной в props?

В чем разница между props и refs reactJS?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    ViewPager2 мигает / перезагружается при смахивании

  3. 3

    Merging legends in plotly subplot

  4. 4

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  5. 5

    Как добавить заголовок в легенду для двух независимых групп, состоящих из трех подгрупп?

  6. 6

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  7. 7

    Невозможно запустить iReports 5.6.0 с Netbeans 8 и JDK 1.8

  8. 8

    выделение строк jQuery DataTables

  9. 9

    JavaFX TextArea как установить текст с автоматическим переносом новой строки

  10. 10

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  11. 11

    Как в точности работает внутренний пул потоков Nodejs?

  12. 12

    Камунда - Фильтровать список задач по назначенной группе

  13. 13

    How do I search for an entry out of two SQL tables and know which table it came from?

  14. 14

    Как фильтровать таблицу SQLite3 в PyQt5

  15. 15

    Как запустить скрипт node js из скрипта powershell и использовать вывод скрипта node js в скрипте powershell?

  16. 16

    Создание гистограммы для 10 монет, перевернутых одновременно 1000 раз с помощью R

  17. 17

    How to convert C++/CLI string to const char*

  18. 18

    Элемент "эллипс", созданный с помощью JS, не отображается в HTML

  19. 19

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  20. 20

    Slick Carousel + Проблема форматирования аккордеона

  21. 21

    Два ArrayList один адаптер RecyclerView

популярныйтег

файл