反应setState错误

问题描述 投票:0回答:1

articles.js 中有错误
文章.js:

import React, {Component} from 'react';
import './index.css';

export default  class Class extends Component {
    constructor(props) {
        super(props);
        this.state = {
            asd: "asd"
        }
    }

    componentDidMount(){
        this.df();
    }

    async df(){
        let a = await fetch("http://localhost:8080/articles")
        let content = await a.json();
        alert(content)
        this.setState(state=>{
           asd:content.core
            }
        )
    }
    render() {
        return (
            <div>
                <div id={"mainArticle"} dangerouslySetInnerHTML={{__html:this.state.asd}}>
                    </div>
                <div>
                    </div>
                <p></p>
                </div>
            );
        }
}

我在 df 函数中获取一个包含 html fork 的字符串并将其传递给 setState asd

之后,该函数被传递给 componentDidMount,它将启动该函数并更改 asd 的值

接下来,asd的值被传递给

dangerouslySetInnerHTML 属性,其中 div 应该已经在其内部输出 html 标记

终端给我错误:
预期是一个赋值或函数调用,但看到的是一个表达式
怎么了?

我不知道该怎么办...

javascript reactjs class setstate
1个回答
0
投票

问题出在

df
函数的
setState
箭头函数中。

this.setState(state=>{
        asd:content.core
    }
)

应该是

this.setState(state=> ({
        asd:content.core
    })
)

this.setState(state=> {
        return { asd:content.core }
    }
)

这是因为如果函数体在箭头 (

{
) 之后以
=>
开头,它会被解析为块体,而不是表达式。因此,这就像做

this.setState(function (state) {
    asd:content.core
})

其中

asd:
被解释为 label
content.core
被解释为表达式。

© www.soinside.com 2019 - 2024. All rights reserved.