私はBabelを直接使用できない場所で簡単に使用できるように、リアクションコードをリファクタリングしています。これを助けるために、私はコンポーネントを構築し、それらに小道具を渡す短い関数を設定しています。このコードは正常に動作します:動的に作成されたReactコンポーネントにカスタムの小道具を設定する
components.js:
import ResponsiveMenu from './components/responsive-menu';
window.setupMenu = (items, ele) => {
ReactDOM.render(<ResponsiveMenu items={items}/>, ele);
};
静的-js.html:
<div id="menu"></div>
<script>
setupMenu({ items: [] }, document.getElementById('menu');
</script>
をしかし、私はより一般的な何かにそれを回すしようとするとこのように多くのコンポーネントを処理するには:
components.js:
import ResponsiveMenu from './components/responsive-menu';
import AnotherComp from './components/another-comp';
window.setupComponent = (selector, name, props) => {
let eles;
if (typeof selector == 'string') {
eles = [];
let nl = document.querySelectorAll(selector), node;
for (let i = 0; node = nl[i]; i++) { eles.push(node); }
} else {
eles = $.toArray(selector); // A helper function that converts any value to an array.
}
return eles.map (
(ele) => {
let passProps = typeof props == 'function' ? props(ele) : props;
return ReactDOM.render(React.createElement(name, passProps), ele);
}
);
};
静的-js.html:Warning: Unknown prop "items" on <ResponsiveMenu> tag. Remove this prop from the element. For details, see (really unhelpful shortened link that SO doesn't want me posting)
はこれがためにJSXバージョンで動作しない理由を私は理解して助けてください。私は、このエラーを取得する
<div id="menu"></div>
<script>
setupComponent('#menu', 'ResponsiveMenu', { items: [] });
</script>
コンポーネントの作成のより多くのマニュアルバージョン。
警告は私が最終的に、このページにリンク:https://facebook.github.io/react/warnings/unknown-prop.html – eltiare