React:在ES6类中访问上下文

时间:2016-03-30 21:48:22

标签: javascript reactjs ecmascript-6

使用ES6类语法,我无法在类中的其他方法中保留context的值。例如:

class Repos extends React.Component {
  constructor(props, context) { // eslint-disable-line
    super(props, context);
    console.log(this.context.router);
  }

  handleSubmit(event) {
    event.preventDefault();
    const userName = event.target.elements[0].value;
    const repo = event.target.elements[1].value;
    const path = `/repos/${userName}/${repo}`;
    console.log(path); // eslint-disable-line
    this.context.router.push(path);
  }

对于第一个控制台日志,上下文仍然存在:

enter image description here

对于第二个控制台日志,不是那么多:

enter image description here

如何在构造函数之外的方法中处理this.context,但是在类中?

1 个答案:

答案 0 :(得分:5)

你有没有忘记绑定功能来保存上下文?

如果将函数传递给某个action属性(例如onSubmit),则应使用bind。 React ES6-classes不会自动绑定方法。