3

この基本的なコンポーネントを取得してthisオブジェクトを認識させることができません。何を試してもエラーが発生します。

キャッチされていない TypeError: 未定義のプロパティ 'getEvents' を読み取ることができません

これは、機能しようとしているコードです。

import React from 'react'
import PureRenderMixin from 'react-addons-pure-render-mixin';
import { connect } from 'react-redux';
import ListGroup from 'react-bootstrap/lib/ListGroup';
import ListGroupItem from 'react-bootstrap/lib/ListGroupItem';

export const Selector1 = React.createClass({
  mixins: [PureRenderMixin],

  getEvents: () => this.props.eventTypes || [{name: "NO EVENTS!"}],

  render: _ =>
      <ListGroup>
        {this.getEvents().map(event =>
          <ListGroupItem>{event.name}</ListGroupItem>
        )}
      </ListGroup>
});

function mapStateToProps(state) {
  return {
    eventTypes: state.get('eventTypes')
  };
}

export const Selector1Container = connect(mapStateToProps)(Selector1);

実行時に undefined が定義されていないのはなぜですかthis? また、これが実際に必要なものを参照するにはどうすればよいですか?

4

1 に答える 1

2

アロー関数には独自の機能がないため、arrow function( ) を通常の関数に変更します。=>this

export const Selector1 = React.createClass({
  mixins: [PureRenderMixin],

  getEvents() {
    return this.props.eventTypes || [{name: "NO EVENTS!"}]
  },

  render() {
    return <ListGroup>
      {this.getEvents().map(event =>
        <ListGroupItem>{event.name}</ListGroupItem>
       )}
    </ListGroup>
  }
});
于 2016-03-13T16:59:27.717 に答える