Я использовал атрибуты data-
для различных реквизитов, затем передал все реквизиты с помощью деструктурирования {...dataset}
, например:
HTML:
<div id="app" data-feed='custom_feed.json' data-someprop='value'></div>
JS:
var root = document.getElementById('app');
ReactDOM.render(<X {...(root.dataset)} />, root);
Изменить: демонстрационный скрипт
Вы можете просто передать свои данные при установке компонента следующим образом:
<div id="root"></div>
<script>
const data = { foo: 'bar' };
ReactDOM.render(
React.createElement(MyComponent, data),
document.getElementById('root')
);
</script>
React Habitat - это структура, которая облегчает это, если вы хотите что-то многоразовое и расширяемое.
Вы регистрируете компоненты React, такие как
containerBuilder.register(Feed).as('Feed')
Тогда определите цели в HTML, как это, с помощью реквизита
<div data-component="Feed" data-prop-feed-src="/custom_feed.json">
React Habitat проведет их в любое время, когда оно появится в HTML.
Раскрытие: Я являюсь одним из руководители этой структуры.
У меня была аналогичная проблема, динамически сгенерированные страницы, содержащие данные, относящиеся к материалам React.
Я просто объявил их в глобальной области.
<script>
window.foobles = [12,453,12];
window.bahs = ["bah", "bah", "black sheep"];
</script>
.. THEN ..
ReactDOM.render(
<Component
foobles={window.foobles}
bahs={window.bah}
/>,
document.getElementById('app')
)
Очевидно, что с точки зрения имен это может иметь некоторые недостатки:)
data-
предназначены для использования для этой цели, а не для создания недействительных атрибутов. 2. Вам не нужно набирать.getAttribute
для каждой дополнительной опоры, которую вы хотите передать, все они находятся вdataset
, – pawel 11 April 2016 в 13:46dataset
. Что делать, если нужно передать весь массив / объект? – jayarjo 24 June 2016 в 08:56data-
, но я думаю, что когда дело доходит до большого количества данных, было бы лучше просто напечатать объект в теге<script>
, а затем ссылаться на него компонент. – pawel 24 June 2016 в 09:08