0

リスト、ボタン、テーブルなどの再利用性を促進するために、いくつかの一般的なコンポーネントを使用しています。これらのコンポーネントにはすべて、listItem、listContainer、listHead などの同じコンポーネント グループ間のすべてのプロパティを処理するために使用されるコントローラー クラスがあります。私の問題は、リストを使用してコントローラーから親コンポーネントにイベントをバブルアップする方法です。

親コンポーネント呼び出しリスト

    @inject('dataStore')
    @observer
    export class FooList extends Component {

      handleListItemClick(id) {
        console.log('Where I want to access click data!', id)
      }

      render() {
        return (
          <List
            title='Foo List'
            modeable
            data={this.dataStore.Bar}
            model={barModel}
            listItemTypesEnabled={true}
            />
        )
      }

    }

List Component (ListController の新しいインスタンスの作成)

  export class List extends Component {  

  constructor(props) {
    super(props)
    this.listController = new ListController()
    this.listController.title = props.title
    this.listController.modeable = props.modeable
    this.listController.data = props.data
    this.listController.model = props.model
    this.listController.listItemTypesEnabled = props.listItemTypesEnabled || false
    props.selectedItemId = this.listController.selectedListItemId
  }

  render() {
    return <Provider listController={this.listController}>
      <ListContainer {...this.props} />
    </Provider>
  }
}

リスト コントローラ クラス

import { observable, action, computed } from 'mobx'

export class ListController {
  @observable data
  @observable model
  @observable title
  @observable modeable
  @observable listMode = 'thin'
  @observable selectedListItemId = -1

  @action handleModeClick = (mode) => {
    this.listMode = mode

  @action handleItemClick = (itemId) => {
    console.log('clicked:', itemId)
    this.selectedListItemId = itemId //i was able to get to this part successfully
  }

親コンポーネントからクリック イベントにアクセスするにはどうすればよいですか?

4

0 に答える 0