0

export default React.createClassBoostrap Modal と Griddle テーブルの処理に成功しました。

ユーザーがグリドルの特定の列をクリックしたときに、モーダルを開きたいと思います。これは、クリック コード/イベントを処理するカスタム コンポーネントを使用して行われます。しかし、カスタム コンポーネントは新しい別のクラスとして定義されているためvar editData = React.createClass、メイン クラスの状態にアクセスしてモーダルを開くことはできません。

どのように進めればよいですか?ここのコードでは、私が見逃している部分はわかりません

ありがとうカール

var editData = React.createClass({
    render: function() {
        return (
            <div onClick={I DO NOT KNOW}> 
                Edit row data for id {this.props.rowData.id}
            </div>
        )
    }
})

var columns = ["id", "name", "edit"]

var columnMeta = [{
    columnName: "edit",
    customComponent: editData
}]

export default React.createClass({

    close() {this.setState({ showModal: false })},

    open() {this.setState({ showModal: true })},    

    render() {
        return (<div>
        <Modal show={this.state.showModal} onHide={this.close}>
        <Modal.Header closeButton>
        <Modal.Title>Modal heading</Modal.Title>
        </Modal.Header>
        <Modal.Body>
        Text in a modal
        </Modal.Body>
        <Modal.Footer>

        <Griddle columns={columns} columnMetadata={columnMeta} />
        </div>)
    }

})
4

1 に答える 1

0

小道具に関数を渡すことで解決しました。ここで私がしたことを下に。

var editData = React.createClass({

    handleChange(){
        this.props.metadata.onChange("your value here")
    },

    render: function() {
        return (
            <div onClick={this.handleChange}> 
                Edit row data for id {this.props.rowData.id}
            </div>
        )
    }
})

var columns = ["id", "name", "edit"]

export default React.createClass({

    handleChange(e){
        console.log(e)
    },

    close() {this.setState({ showModal: false })},

    open() {this.setState({ showModal: true })},    

    render() {

        var columnMeta = [{
            columnName: "edit",
            customComponent: editData,
            onChange: this.handleChange
        }]

        return (<div>
        <Griddle columns={columns} columnMetadata={columnMeta} />
        </div>)
    }

})
于 2016-09-02T11:04:36.893 に答える