Reactjs Spotify隐式流教程,标记为空

Reactjs Spotify隐式流教程,标记为空,reactjs,spotify,Reactjs,Spotify,新开发人员试图创建一个spotify搜索项目来帮助我学习 我遵循本教程,因此用户可以使用spotify登录我的应用程序。 我现在被困在一个部分,它问你在哪里创建登录按钮。我遵循了代码示例,但当我加载页面时,出现了一个错误: TypeError: Cannot read property 'token' of null Landing.render src/components/Landing.js:39 36 | } 37 | render() { 38 | return (

新开发人员试图创建一个spotify搜索项目来帮助我学习

我遵循本教程,因此用户可以使用spotify登录我的应用程序。

我现在被困在一个部分,它问你在哪里创建登录按钮。我遵循了代码示例,但当我加载页面时,出现了一个错误:

TypeError: Cannot read property 'token' of null
Landing.render
src/components/Landing.js:39
  36 | }
  37 | render() {
  38 |   return (
> 39 |     <div className="Landing">
     | ^  40 |       {!this.state.token && (
  41 |       <a
  42 |         className="btn btn--loginApp-link"
TypeError:无法读取null的属性“token”
Landing.render
src/components/Landing.js:39
36 | }
37 | render(){
38 |返回(
> 39 |     
|^40{!this.state.token&&(
41 |       
)}
{this.state.token&&(
log(“你好”)
)}
);
}
}
导出默认着陆;

有人能把我推到正确的方向吗?

出现错误的原因是没有定义初始状态值。所以react将
this.state
设置为
null
,这样您就得到了错误

如何解决这个问题

  • 您可以在构造函数中设置默认状态,这样
    this.state
    就不是
    null
  • 您可以检查状态是否不为null(或者只是不是falsy值),然后呈现所需的内容
  • 从您展示的教程中,您可以看到,在下一个代码示例中,此人实际上声明了一个默认状态

    constructor() {
        super();
        this.state = {
          token: null,
        item: {
          album: {
            images: [{ url: "" }]
          },
          name: "",
          artists: [{ name: "" }],
          duration_ms:0,
        },
        is_playing: "Paused",
        progress_ms: 0
      };
    

    您的状态似乎未设置。这一行的输出是什么?
    console.log(\u-token)
    ?它是未定义的。Ye,因此未设置状态。如果未定义
    \u标记
    ,则永远不会运行
    此.setState()
    。我猜你看到“无令牌”正在打印?是的,但我不知道为什么它是空的。正如我所说,我对编码还很陌生。但是我遵循上面的教程,这似乎正是他设定的,所以我不确定为什么我会看到这个错误,因为
    this.state
    是未定义的。如果您在Chrome的开发者工具中打开控制台并键入
    this.state.token
    ,您将得到与没有
    this.state
    完全相同的错误,因此不可能存在
    this.state.token
    。您是否尝试过删除if-
    if(_令牌){
    ?非常感谢!这确实有帮助
      constructor() {
        super();
        this.state = {
          token: ""
        };
      }
    
    {this.state && !this.state.token && (...
    
    constructor() {
        super();
        this.state = {
          token: null,
        item: {
          album: {
            images: [{ url: "" }]
          },
          name: "",
          artists: [{ name: "" }],
          duration_ms:0,
        },
        is_playing: "Paused",
        progress_ms: 0
      };