reactにおける親子コンポーネントのデータ転送、サブコンポーネント間のデータ転送
3041 ワード
まず三つのjsファイルがあります.index.js(親コンポーネント)baseForm.js(サブコンポーネント)etabele.js(サブコンポーネント)
index.jsでarr配列を定義して、BaseFormコンポーネントに伝えます.
reactにおけるデータ転送は一方向であるため、データストリームは親コンポーネントからサブコンポーネントにのみ流れることができる.サブコンポーネント間のデータ転送は、データを最初に彼らの共通の親コンポーネントに渡すことによって、親コンポーネントからサブコンポーネントに送ることができる.(もちろん、状態管理機構reduxによって制御することもできます.ここでは詳細には紹介しません.)まずプロップDataを通じて親コンポーネントにオブジェクトを転送します.
親コンポーネントはtobroothedataメソッドset Stateによって、他のサブアセンブリETableにデータを送るために設定されます.
ETableコンポーネント内部でデータを取得する
index.jsでarr配列を定義して、BaseFormコンポーネントに伝えます.
import React from 'react'
import BaseForm from '../components/baseForm'
import ETable from '../components/etable'
export default class IndexPage extends React.Component{
state = {
arr: [1,2,3,4,5]
}
changeArr = () => {
this.setState({
arr: [2,3,4,8,10]
})
}
render () {
return (
)
}
}
BaseFormコンポーネントでは、this.props.arrを介して親コンポーネントからの行列を取得し、this.com mmitChangeを介して親コンポーネントにイベントを転送することができます.import React from 'react'
import {Button} from 'antd'
export default class BaseForm extends React.Component{
initFormList = () => {
const arr = this.props.arr;
return arr.map((item) => {
return {item}
})
}
commitChange = () => {
this.props.changeArr();
}
render () {
return (
{this.initFormList()}
)
}
}
親コンポーネントは、サブアセンブリから送信されたイベントを受信してデータを処理し、データをサブアセンブリに転送する.データはいずれも親から子一方向のデータストリームである.reactにおけるデータ転送は一方向であるため、データストリームは親コンポーネントからサブコンポーネントにのみ流れることができる.サブコンポーネント間のデータ転送は、データを最初に彼らの共通の親コンポーネントに渡すことによって、親コンポーネントからサブコンポーネントに送ることができる.(もちろん、状態管理機構reduxによって制御することもできます.ここでは詳細には紹介しません.)まずプロップDataを通じて親コンポーネントにオブジェクトを転送します.
親コンポーネントはtobroothedataメソッドset Stateによって、他のサブアセンブリETableにデータを送るために設定されます.
ETableコンポーネント内部でデータを取得する
import React from 'react'
export default class ETable extends React.Component{
state = {
data: this.props.data
};
componentWillReceiveProps(nextProps) {
this.setState({data: nextProps.data});
}
render () {
return (
{this.state.data.id}
)
}
}