React Router Dom возвращает пустую страницу при переходе на конкретный маршрут

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

Class Base1 {
};

Class Derived1 : public Base1 {
};


Class Base2 {
  Base *bObj;
  virtual void createMemerObects() = 0;
};

Class Derived2 {
  virtual void createMemerObects() {
    bObj = new Derived1();
  }
};

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

0
задан ankur 13 July 2018 в 08:36
поделиться

2 ответа

Вы не можете получить доступ к data прямо так. Если вы задали свойство state с именем data, вам нужно получить к нему доступ, используя this.state.data в функции render().

this.state.data.map(item => {
    ...
});

Еще одна проблема, с которой вы можете столкнуться, - это что функция componentDidMount запускается после первого рендеринга компонента (см. React componentDidMount () ), что означает, что вы будете получать доступ к данным в render() до его создания и использовать map on неопределенное значение.

Я предлагаю вам либо использовать componentWillMount(), либо создать свойство данных в constructor, например:

constructor(props) {
    super(props);

    this.state = { data: [] };
}
0
ответ дан Pierre C. 17 August 2018 в 13:23
поделиться
  • 1
    Поэтому я получил предупреждение об объекте json из события. он дает эту ошибку теперь this.state.data.map не является функцией – ankur 13 July 2018 в 08:33
  • 2
    Каков формат вашего объекта JSON? map может использоваться только для массива. – Pierre C. 13 July 2018 в 08:38
  • 3
    Я отправляю List & lt; object & gt; из C #, который определенно Serialize, в консоли я получаю этот объект [object Object], [Object Object], [Object Object], [Object Object], [Object Object], [Object Object], [Object Object], [Object Object], [Object Object] объект Object], [объект Object], [объект Object] – ankur 13 July 2018 в 09:01
  • 4
    Это странный результат. Как упоминалось в других комментариях, эта проблема структуры данных не имеет отношения к исходному вопросу. Вы должны принять решение здесь и создать новый, если необходимо. – Pierre C. 13 July 2018 в 09:57
  • 5
    Проблема заключалась в том, что когда я устанавливал значение в локальном хранилище, он был преобразован в строку, поэтому мне пришлось выполнить Stringy перед сохранением и анализом после получения. – ankur 13 July 2018 в 11:11

Я думаю, что componentDidMount не срабатывает из-за

  1. . В методе рендеринга есть ошибка. Вы используете data.map, и вы устанавливаете данные в this.state.data
  2. . В самом утверждении нет подтверждения, потому что при первом рендере эта переменная не будет иметь значения. Что-то вроде {this.state.data && data.map(..)} должно быть уместным в вашем случае.

Итак, почему метод не стреляет? Вероятно, из-за того, что выполнение является последовательным, оно останавливается, когда оно встречает ошибку в вашем заявлении data.map. Исправьте эти ошибки, и я думаю, что вам будет хорошо.

0
ответ дан Aseem Upadhyay 17 August 2018 в 13:23
поделиться
  • 1
    Поэтому у меня есть добавленный конструктор, теперь происходит пожар. Однако при доступе в обратном случае это не работает.state.data.map не является функцией, почему это так? – ankur 13 July 2018 в 08:37
  • 2
    эта ошибка означает, что ваш data не имеет значения в момент выполнения этого оператора. Или ваш data не имеет тип array. контрольная точка 2 @ankur – Aseem Upadhyay 13 July 2018 в 08:39
  • 3
    Из C # я отправляю список объектов, которые я завершаю result = JsonConvert.SerializeObject (учетные записи). По какой-то причине, когда я делаю console.log результата, он дает мне [object Object], [object Object], [object Object], [object Object], который не является допустимым массивом для него. Я попытался разобрать, что он уже разбирался. – ankur 13 July 2018 в 09:03
  • 4
    то ваша ошибка, вероятно, заключается в манипуляции с структурой данных. который выходит за рамки этого вопроса – Aseem Upadhyay 13 July 2018 в 09:05
Другие вопросы по тегам:

Похожие вопросы: