私は、ユーザーから特定のデータを取得するための簡単なブラウザアプリケーションを開発しています。 私はそのデータを収集するプロセスを簡素化するためにいくつかのコンポーネントを用意していますが、現在このコンポーネントのレンダリング方法を再考しています。反応コンポーネント - 親子の対話。コンポーネントのライフサイクル
基本的には、どのコンポーネントをレンダリングするかを状態を使用して管理する主なコンポーネントがあります。
私はこれを自分のコンポーネントのほぼすべてに対して行っています。 また、私は親コンポーネントの内部に関数を持っています。これは、私が小道具を介して子コンポーネントに渡し、そのコンポーネントがもう役に立たなくなったときに子ステートを親に渡すコールバックとして使用されます。
class Main extends React.Component {
constructor(props){
this.state = {
renderA: true,
renderB: false,
childState: null
}
}
collectState(state){
this.setState({
childState: state
});
}
render() {
let content = null;
if(this.state.renderA === true){
content = <ComponentA />
} else {
content = <ComponentB />
}
return(
<div>
{content}
</div>);
}
}
ので、上記の例を使用して、子供がこの
class ComponentA extends React.Component {
constructor(props){
super(props);
this.state = {
stop: false,
usefullInfo: null
}
destroy() {
this.props.collectstate(this.state.usefullInfo)
}
render(){
render something (like a Form) untill this.state.usefullInfo is set;
in that case, set this.state.stop true which will call destroy, passing the usefull information to parent
}
}
ようなものになるだろうので、この方法が私のために動作しますが、私はおそらくこれがへの道ではないというはっきりと見ることができますこれを行う。この時点で
は、私の質問は以下のとおりです。
1)私はthis.state.stopようないくつかのプロパティでそれを追跡することなく、コンポーネントのレンダリングを停止することができますか?
2)メインコンポーネントのように2つの異なるコンポーネントをレンダリングしたい場合は、常にレンダリングするためにrenderAとrenderBプロパティをstateに保持する必要がありますか?
3)子から親に情報を渡すより良い方法がありますか?私は現在、親から子への小道具を介して渡されたコールバック関数を使用しています。コンポーネントがその目的を果たしたときにそのコールバックを呼び出すのですか?
4)上記のコードの品質を改善する方法に関する一般的な提案はありますか?
ありがとうございました:)!
私はあなたの提案がコードをどのように改善するか確認することができます。本当に助かりました。私はあなたの助けに感謝します。 誰かに何か提案があるかどうかを確認するために、これをもう少し開いておきます。私はあなたの答えをすぐに受け入れます。 –