当前位置: 首页 > 面试题库 >

预期“ this”将被类方法使用

刘英彦
2023-03-14
问题内容

在我的课堂上,eslint抱怨“预期的’this’由类方法’getUrlParams’使用

这是我的课:

class PostSearch extends React.Component {
  constructor(props) {
    super(props);
    this.getSearchResults();
  }

  getUrlParams(queryString) {
    const hashes = queryString.slice(queryString.indexOf('?') + 1).split('&');
    const params = {};

    hashes.forEach((hash) => {
      const [key, val] = hash.split('=');
      params[key] = decodeURIComponent(val);
    });

    return params;
  }

  getSearchResults() {
    const { terms, category } = this.getUrlParams(this.props.location.search);
    this.props.dispatch(Actions.fetchPostsSearchResults(terms, category));
  }

  render() {
    return (
      <div>
        <HorizontalLine />
        <div className="container">
          <Col md={9} xs={12}>
            <h1 className="aboutHeader">Test</h1>
          </Col>
          <Col md={3} xs={12}>
            <SideBar />
          </Col>
        </div>
      </div>
    );
  }
}

解决此问题或重构此组件的最佳方法是什么?


问题答案:

您应该this按ESLint错误将功能绑定到"Expected 'this' to be used by class method 'getUrlParams'

getUrlParams = (queryString) => { .... }

因为您没有getUrlParams在渲染期间使用(如onClick()),所以上述技术很好,我们可以称其为“类属性中箭头功能的用法”。

还有其他绑定方法:

  • 在构造函数中绑定 this.getUrlParams=this.getUrlParams.bind(this)
  • 渲染中的箭头函数,例如,onClick={()=>this.getUrlParams()}假定函数没有参数。
  • React.createClass与ES6没有意义:)


 类似资料:
  • 我已经读了很多关于这个错误的答案,但我没有找到解决方案,也许类对象不一样 我的错误是: 通用域名格式。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为字符串,但为BEGIN_对象 所以,我只是想从JSON中获取一个对象,如下所示: 我的JsonObject是: 我的不同POJO(我不把get和set简称为代码): 这是完整的堆

  • 出于某种原因,我在es6课上给“这个”取了个奇怪的值... null null 为什么clickers的click方法中的“this”指的是dom节点而不是...本身? 更重要的是,如果我不能使用“this”来做的话,我如何从它的click方法中引用clickers的count属性?

  • 问题内容: 我有以下代码片段: 我期望结果为“ 987654321”,但是我得到“ 123456789”,就像方法setNumber没有任何效果,任何人都可以帮助我理解 问题答案: 您在方法内重新声明phoneNumber变量,使类中的字段处于阴影中,因此对局部变量所做的任何更改都不会在带阴影的类字段中显示。不要这样 摆脱重复变量声明,以便在字段中看到在方法内所做的更改。 例如,更改此: 对此:

  • 通常创建对象来表示真实世界中的实体,如用户和订单等: let user = { name: "John", age: 30 }; 并且,在现实世界中,用户可以进行 操作:从购物车中挑选某物、登录和注销等。 在 JavaScript 中,行为(action)由属性中的函数来表示。 方法示例 刚开始,我们来教 user 说 hello: let user = { name: "John",

  • 问题内容: 像这样:类具有一个称为sayHello()的方法。当该类的实例调用sayHello()时,另一个类中的方法会在调用sayHello()之前自动调用。 示例代码可以像这样: 输出结果: 似乎可以通过使用代理模式来完成。但我希望它可以更简单。 使用注释: 然后将MethodListener注释放在Person类中的方法sayHello()上, 调用具有MethodListener批注的方法

  • 我正试图让在我的回调中执行。出于某种原因,onFailure会不断被调用,即使服务器返回200个代码,我也会获取全部数据。 我不确定必须做什么才能正确执行,以便解析JSON并将对象添加到列表视图中。 相关片段:- 请求接口:- 公共接口请求接口{ 服务器响应类: php代码:- functions.php: 数据库操作: 这是我在服务器上的回复: 这是堆栈跟踪和异常: [Ljava.lang.St