MVVM 框架 -- Redux 添加表单

Redux 添加表单

上一个博客已经展示了对应的数据,参考 Redux 快速入门,这一节会用一个表单添加数据。

1、在components下新建PostFrom.js

  • 添加内容,以及对应的constructor
  • 想要展示,就要引入到App.js,并在div里使用
查看代码
  
//PostFrom.js
import React, {Component} from 'react';

class PostForm extends Component {
constructor(props){
super(props);
this.state = {

    }
}
render() {
    return (
         <div>
            <h1> 添加内容</h1>
         </div>
    );
}

}

export default PostForm;

//App.js
······
import PostForm from "./components/PostForm";
······
<div>
<PostForm/> {/*使用 /}
<Posts/> {/
使用 */}
</div>

2、回到PostForm.js代码,写表单

  • div 里面添加 form 标签,添加事件,onSubmit 方法
  • 继续在 form 里面添加div,写 2 个 label,1 个 button
  • 绑定对应状态,绑定事件,绑定 value
  • 给事件绑定this
  • 写刚刚添加的方法
查看代码
  
import React, {Component} from 'react';

class PostForm extends Component {
constructor(props){
super(props);
this.state = {
//绑定对应状态
title:"",
body:""
}
//绑定this
this.onChange = this.onChange.bind(this);
this.onSubmit = this.onSubmit.bind(this);
}

//方法
onChange(e){
    //方法里面空着的话,浏览器页面不能写入数据
    this.setState({ [e.target.name]:e.target.value});
}

onSubmit(e){

}

render() {
    return (
        &lt;div&gt;
            &lt;h1&gt;添加内容&lt;/h1&gt;
            &lt;form onSubmit={this.onSubmit}&gt;
                &lt;div&gt;
                    &lt;label&gt;title &lt;/label&gt; &lt;br/&gt;
                    &lt;input type="text" name="title"
                           onChange={this.onChange}
                           value={this.state.title}/&gt;
                           {/*绑定事件、value*/}
                &lt;/div&gt;
                &lt;div&gt;
                    &lt;label&gt;body&lt;/label&gt;&lt;br/&gt;
                    &lt;textarea name="body"
                              value={this.state.body}
                              onChange={this.onChange}&gt;
                     &lt;/textarea&gt;
                 &lt;/div&gt; &lt;br/&gt;
                 &lt;button type="submit"&gt;添加 &lt;/button&gt;
             &lt;/form&gt;
         &lt;/div&gt;
    );
}

}

export default PostForm;

3、

  • 写 onSubmit 这部分
  • 请求数据,并把表单中输入的内容放到数据里面去
查看代码
  
onSubmit(e){
        e.preventDefault(); //阻止默认事件
    const post = { //拿到状态
        title:this.state.title,
        body:this.state.body
    };

    fetch("http://jsonplaceholder.typicode.com/posts",{
        method:"POST",
        headers:{
            "content-type":"application/json"
        },
        body:JSON.stringify(post)
    })
        .then(res =&gt; res.json()) //成功的话,返回数据,并进行json解析
        .then(data =&gt; console.log(data)) //打印日志
}

  • 正常获取到数据:
posted @ 2019-11-14 14:54  菲菲的超级粉丝  阅读(235)  评论(0编辑  收藏  举报