私はReact Bootstrap Table
ですが、テーブルの各ページには20レコードあります。各行に次の行を使用してボタンを追加しましたReact Bootstrapテーブルはモーダルを作成するために各行にボタンを持っていますが、1つのボタンはモーダルのレンダリングを複数回呼び出します
function attachFormatter(cell, row){
return (
<AttachmentManager />
);
}
<TableHeaderColumn key={uuid.v4()}
dataField={column.dataField}
dataFormat={attachFormatter}
hidden={hide}>
{column.label}
</TableHeaderColumn>
次に、このページには20個のボタンがあり、各行には1個のボタンがあります。私はボタンをクリックするとモーダルを開くつもりだった。しかし、1つのボタンをクリックすると、openModal()
が期待どおり1回実行されますが、AttachmentManager
のrender()
機能は20回実行されます。これを解決するには?
export default class AttachmentManager extends React.Component {
constructor (props) {
super(props);
this.state = {showModal: false};
}
openModal() {
alert('test');
}
render() {
return (
<button onClick={this.openModal.bind(this)} className="btn btn-default">Add Projects
<AttachmentModal show={this.state.showModal}/>
</button>
);
}
}
そして、次は私のモーダル
import React from 'react';
import SimpleModal from '../common/SimpleModal';
export default class AttachmentModal extends React.Component {
constructor (props) {
super(props);
}
render() {
return (
<SimpleModal showModal={this.props.show}
onToggleModal={this.props.onHide}
title={this.props.title}
onCancelClick={this.props.onHide}
onPrimaryButtonClick={this.props.onPrimaryButtonClick}
cancelText="Cancel"
primaryButtonText={this.props.primaryButtonText}
loading={this.props.loading}
backdrop='static'
bsStyle={this.props.bsStyle}>
{this.props.children}
</SimpleModal>
);
}
}
まだ同じです。ボタンを1つクリックすると、 'render()'が20回呼び出されます。 –
あなたの質問に「AttachmentModal」のコードを追加できますか? – palsrealm
編集されたコードを参照してください。レンダリングだけがボタンを作成できるように 'AttachmentManager'の' '行を削除しましたが、レンダリングは複数回実行されます –