Почему компонент не получает (не имеет) props?

156
31 марта 2019, 08:30

Имеется такой простой (лишнее специально вырезал) компонент:

import React, { Component } from 'react';
class QueryParamSelect extends Component {
  render() {
    return (
      <div>
        {JSON.stringify(this.props)}
      </div>
    )
  }
}
export default QueryParamSelect;

Вывожу его в шаблон back-end фреймворка следующим образом:

%QueryParamSelect{ label: 'Label', options: @options, param: 'rts' }

Что в итоге эквивалентно этому:

<queryparamselect label="Label" options="[[&quot;all&quot;, &quot;All&quot;], [&quot;first&quot;, &quot;First&quot;], [&quot;second&quot;, &quot;Second&quot;]]" param="rts"></queryparamselect>

Ну и чтобы все это дело заработало использую это:

document.addEventListener('DOMContentLoaded', () => {
  if (document.getElementById('query-param-select')) {
    ReactDOM.render(
      <QueryParamSelect/>,
      document.getElementById('query-param-select')
    )
  }
})

В итоге я получаю {} от this.props.

Глядя на официальную документацию (https://reactjs.org/docs/components-and-props.html) я не совсем понимаю в чем проблема. Можете, пожалуйста, объяснить где и что я сделал не так?

Answer 1

Весь код я привел к такому виду и все заработало.

На стороне back-end фреймворка:

#query-param-select{ 'data-label': 'Label', 'data-options': @options, 'data-param': 'rts' }

В JS:

const qps = document.getElementById('query-param-select')
ReactDOM.render(<QueryParamSelect label={qps.dataset.label} options={qps.dataset.options} param={qps.dataset.param} />, qps)

В React компоненте ничего не трогал.

READ ALSO
Как загрузить файл на AWS?

Как загрузить файл на AWS?

При попытке загрузить файл через nodeJS на AWS получаю сл ошибку

144
Управление анимацией GIF посредством JavaScript

Управление анимацией GIF посредством JavaScript

Есть ли способы управлять анимацией анимированного GIF посредством JavaScript? Если есть способы, то как это можно сделать?

157
Несколько значений массива из 1 input

Несколько значений массива из 1 input

задача простыми словами: Есть пустой массивЕсть инпут и кнопка

157
Невозможно экспортировать таблицу mysql в csv

Невозможно экспортировать таблицу mysql в csv

Вот хочу экспортировать данные из таблицы:

140