4つの行のゲームで、コンポーネントの配列を作成します。親コンポーネントから特定のコンポーネントのメソッドを呼び出す必要があります。refを含むコンポーネントの配列
フィールドを構築する2つの方法は次のとおりです。 renderRowで私は、コンストラクタで定義されている配列にrefを入れます。
renderRow(row){
var Buttons = new Array(this.props.w)
for (var i = 0; i < this.props.w; i++) {
thisButton=<FieldButton ref={(r) => { this.refField['row'+ row +'col'+ i] = r; }} handler={this.actionFunction} key={'row'+ row +'col'+ i}></FieldButton>
Buttons.push(thisButton)
}
return Buttons
}
renderField(){
var Field = new Array(this.props.h);
for (var i = 0; i < this.props.h; i++) {
var row = this.renderRow(i);
Field.push(<View key={i} style={styles.fieldWrap}>{row}</View>);
}
this.field = Field;
}
actionFunctionは単に現在のrefを出力します。
actionFunction(pos) {
console.log(this.refField['row'+ pos.row +'col'+ pos.col])
}
問題:出力は未定義です。
編集: 私はreField変数をCONSOLE.LOG場合、これが出力されます:
ライン4: 'thisButton'はVAR thisButtonまたはconstのthisButtonように宣言する必要があります。これは単にタイプミスかもしれません。 –
何も変更しませんでした。 – Colin
オブジェクトrefFieldをthis.refField = {}のように初期化しました –