Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数不返回组件_Javascript_Reactjs - Fatal编程技术网

Javascript 函数不返回组件

Javascript 函数不返回组件,javascript,reactjs,Javascript,Reactjs,我一直在努力寻找一种方法,每次点击按钮都会在屏幕上添加一个新的postkind。我是新手,知道的不多。该函数在console.log中运行,但不返回Post组件 export default class Extra extends React.Component { constructor() { super(); this.state = { val :'', posts: [] }

我一直在努力寻找一种方法,每次点击按钮都会在屏幕上添加一个新的postkind。我是新手,知道的不多。该函数在console.log中运行,但不返回Post组件

export default class Extra extends React.Component {

    constructor() {
        super();
        this.state = {
            val :'',
            posts: []
        }
    }

    handlePost = () => {
        const newPost = <Post status = "Status" about = "This post is about React"></Post>;
        this.state.posts.push(newPost);
        console.log(this.state.posts.length);
        return (this.state.posts[this.state.posts[this.state.posts.length-1]]);
    }

    render() {
        return(
            <div>

                <button onClick = {this.handlePost}className = "fixed">Post</button>
            </div>
        );
    }
}

const Post = ({ status, about }) => {
    return(
        <div className = "UI">
            <h2>{status}</h2><hr/><br/>
            <p>{about}</p>
        </div>
    );
}
export default Post;

你的代码有很多错误。首先,你不应该使用this.state来改变state。你应该使用this.SetState。你能指定where handle post method吗?你的意思是这样的,this.SetState{posts:this.state.posts.pushnewPost}你又在改变旧的状态了。这是错误的。请看我的回答谢谢Arora,你能告诉我这3个点在handlePost函数中的意思吗?这是一个扩展运算符请看mdn的更多内容
export default class Extra extends React.Component {

    constructor() {
        super();
        this.state = {
            val :'',
            posts: []
        }
    }

    handlePost = () => {
        const newPost = <Post status = "Status" about = "This post is about React"></Post>;
        this.setState({posts:[...this.state.posts,newPost]});
        console.log(this.state.posts.length);
    }

    render() {
        return(
            <div>

                <button onClick = {this.handlePost}className = "fixed">Post</button>
            </div>
        );
    }
}

const Post = ({ status, about }) => {
    return(
        <div className = "UI">
            <h2>{status}</h2><hr/><br/>
            <p>{about}</p>
        </div>
    );
}
export default Post;