加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – React – 如何使用属性初始化器语法存根组件方法?

发布时间:2020-12-15 20:11:20 所属栏目:百科 来源:网络整理
导读:我终于将我的组件从React.createClass()更新为ES6类.我在测试中看到的第一个错误是我的一些sinon.stub()调用失败,因为jscodeshift -t react-codemod / transforms / class.js转换了我的组件方法以使用属性初始化程序提议,即 class Foo extends React.Compone
我终于将我的组件从React.createClass()更新为ES6类.我在测试中看到的第一个错误是我的一些sinon.stub()调用失败,因为jscodeshift -t react-codemod / transforms / class.js转换了我的组件方法以使用属性初始化程序提议,即

class Foo extends React.Component {
  componentWillMount() {
    this.fetchSomeData(this.props);
  }
  componentWillReceiveProps(nextProps) {
    if (nextProps.someProp !== this.props.someProp) {
      this.fetchSomeData(nextProps);
    }
  }
  fetchSomeData = (props) => {
    ...
  };
  render() {
    ...
  }
}

我的问题是:如何使用这种新语法存根fetchSomeData()?我的测试看起来像sinon.stub(Foo.prototype,’fetchSomeData’);因为fetchSomeData不再出现在原型上,所以它不再有效.

谢谢!

解决方法

在这个例子中,fetchSomeData()确实附加到此而不是Foo.prototype,因此在创建实例之前绝对没有办法存根该方法.解决方法是将fetchSomeData()中的逻辑移动到可以存根的不同位置.或者使用不同的语法来定义方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读