reactjsを使用してwebappを開発しようとしていますが、問題があります。 1日以上の研究の後、私はどのように行うのか分かりません。Reactjs動的コンポーネントを他のコンポーネントに追加する
私のページのメインレイアウトであるコンポーネントを使用して、他のコンポーネントを追加して表示したいと考えています。
コンポーネントBase2では、子プロップに別のコンポーネントが含まれています。
import React from 'react';
import PropTypes from 'prop-types';
import { Link, NavLink } from 'react-router-dom';
const Base2 = (child) => (
<div>
<div className="top-bar">
<div className="top-bar-left">
<NavLink to="/">React App</NavLink>
</div>
<div className="top-bar-right">
<Link to="/login">Log in</Link>
</div>
</div>
<child/> // HERE the dynamic component
</div>
);
export default Base2;
それを呼び出す関数は次のとおりです。
const TestBase = ({props}) => {
return (<Base child={MyComponent}/>)
};
またMyComponentのは、クラス宣言することができ2つの方法以下:
import React from 'react';
import LoginForm from '../components/LoginForm.jsx';
class MyComponent extends React.Component{
constructor(props) {
super(props);
...
}
render() {
return (
<LoginForm
onSubmit={this.processForm}
onChange={this.changeUser}
errors={this.state.errors}
user={this.state.user}
/>
);
}
}
export default LoginPage;
第二の方法:
import React from 'react';
import { Card, CardTitle } from 'material-ui/Card';
const MyComponent = {
render() {
return (<Card className="container">
<CardTitle title="React Application" subtitle="Home page." />
</Card>);
}
};
export default MyComponent ;
私の中にテスト、セコだけメソッドが機能します。 2番目の方法の「インスタンス」(私が推測するようなもの)の欠如が問題かもしれませんか? これらの2種類のコンポーネント宣言をとるために、どのようにしてBase2コンポーネントを開発できますか? props.child
によってBASE2コンポーネント、あなたがBASE2コンポーネントを書いた方法で、子(単に引数内render
そして、それを
<Base child={<MyComponent/>}/>
:あなたの助けを事前に
おかげ
あなたのための迅速な返信をありがとうございます。 これらの変更では、2番目の方法のみが機能します。 私は本当になぜそれが1つのケースではなく、2番目のケースで動作しているか知りたいです。 どちらの方法についても戦略はありますか? 両方のメソッドが同じ出力を返しますか?私はそれほど正しいとは言えません。それが私が一人では理解できない理由です。 – Fuego
実際には、あなたの応答のおかげで、私は両方の方法で成功したので、正しい方法を教えてください。私は解決策で私の質問に答えます。 – Fuego