资讯专栏INFORMATION COLUMN

React学习笔记3:用es2015(ES6)重写CommentBox

selfimpr / 3593人阅读

摘要:新搭建的个人博客,本文地址学习笔记用重写在一开始的时候配置中我们就加入了的支持,就是下面的配置,但之前的学习笔记都使用的完成,所以专门作一篇笔记,记录使用完成创建相关文件修改,增加该入口文件修改,引入该文件做个简单的测试,看下浏览器全部用来

新搭建的个人博客,本文地址:React学习笔记3:用es2015(ES6)重写CommentBox
在一开始的时候webpack配置中我们就加入了es2015的支持,就是下面的配置,但之前的学习笔记都使用的es5完成,所以专门作一篇笔记,记录使用es6完成CommentBox

query: {
  presets: ["es2015","react"]
}

1、创建相关文件

touch src/commentEs6.js
//修改webpack,增加该入口文件
  entry:{
    "index":"./src/index.js",
    "comment":"./src/comment.js",
    "commentEs6":"./src/commentEs6.js",
  },
//修改build/index.html,引入该文件
  

2、做个简单的测试,看下浏览器

//require全部用import来完成
import React from "react";
import ReactDom from "react-dom";
//es6支持类,通过类继承完成组件的开发
class CommentBox extends React.Component {
    render () {
        return 
Hello World
} } //渲染 ReactDom.render( ,document.getElementById("content") )

3、直接贴出完整修改后的代码

import React from "react";
import ReactDom from "react-dom";
import marked from "marked"
import $ from "jquery"

class CommentBox extends React.Component {
    constructor(props){
        super(props)
        //state 初始化直接在构造函数完成
        this.state = {data:[]}
    }
    //函数的书写方式也发生了变化
    loadCommentsFromServer(){
        //还不太明白,总之this到了ajax中指向的对象就发生了变化
        var url = this.props.url
        $.ajax({
            url:url,
            dataType:"json",
            cache:false,
            //利用箭头函数传参,可以少去了bind this
            success:(data) => {
                this.setState({data: data})
            },
            error:(xhr,status,err) => {
                console.log(url,status,err.toString())
            }
        })
    }
    handleSubmitComment(data){
        var url = this.props.url
        $.ajax({
            url:url,
            type:"POST",
            data:data,
            dataType:"json",
            cache:false,
            success:(data) => {
                this.setState({data:this.state.data.concat(data)});
            },
            error:(xhr,status,err) => {
                console.log(this.props.url,status,err.toString())
            }
        })
    }
    componentDidMount(){
        this.loadCommentsFromServer()
        //setTimeout(this.loadCommentsFromServer,2000)
    }

    render() {
        return (
            

Comments

) } } class CommentList extends React.Component{ constructor(props) { super(props) } render(){ var commentNodes = this.props.data.map(function(comment){ return ( {comment.text} ) }); return (
{commentNodes}
) } } class Comment extends React.Component { constructor(props) { super(props) } rawMarkup(){ var rawMarkup = marked(this.props.children.toString(),{sanitize:true}) return {__html:rawMarkup} } render(){ return (

{this.props.author}

) } } class CommentForm extends React.Component{ constructor(props) { super(props) this.state = {author:"",text:""} } handleAuthorChange(event){ this.setState({author:event.target.value}) } handleTextChange(event){ this.setState({text:event.target.value}) } handleSubmit(event){ event.preventDefault(); var author = this.state.author.trim() var text = this.state.text.trim() if(!text||!author) { return; } this.props.onSubmitComment({author:author,text:text}); this.setState({author:"",text:""}) return false; } render(){ return (
) } } ReactDom.render( ,document.getElementById("content") )

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78580.html

相关文章

  • React学习笔记2:React官方CommentBox实践

    摘要:浏览器看效果效果显示效果就是瞎比比我不听瞎比比解析后的文本直接被显示在页面上,并没有被浏览器解析,这是为了防止被攻击而作的保护措施。 新搭建的个人博客,本文地址:React学习笔记2:React官方CommentBox实践所有的操作是继续上一个学习笔记,参考的是React官方的CommentBox,不过不是100%按照其实现。参考:https://facebook.github.io/...

    VPointer 评论0 收藏0
  • react组件通信实现表单提交

    摘要:组件通信实现表单提交昨晚做了一个的例子,主要实现的是提交表单实现评论的功能,在做之前先简单介绍一下。并称为前端大框架,就目前来看,尽管发布了也在今年月份发布了,更不在话下,大家要是想学习的话可以去官网学习。 react组件通信实现表单提交 昨晚做了一个react的例子,主要实现的是提交表单实现评论的功能,在做之前先简单介绍一下React。 showImg(https://segment...

    LoftySoul 评论0 收藏0
  • 学习React系列1-React-tutorial全解析

    摘要:例子全解析近些时间一直在关注,关于如何学习可以参照链接的文章自行制定计划。千里之行,始于足下。此外,输出的内容要解析为,而在默认情况下,基于预防攻击的考虑,对输出的内容是不解析为的。 React-tutorial例子全解析 Talk is cheap,Show me the code 近些时间一直在关注React,关于如何学习React可以参照链接的文章自行制定计划。千里之行,始于足下...

    SnaiLiu 评论0 收藏0
  • React学习笔记1:环境搭建

    摘要:新搭建的个人博客,本文地址学习笔记环境搭建本文的书写环境为,之后会补充下的差异创建学习目录初始化项目根据相关提示完善信息,入口文件安装相关包,并且使用也就是支持,需要包,因为我之前做个一些相关项目,所以部分包已经全局安装,比如等等,大家 新搭建的个人博客,本文地址:React学习笔记1:环境搭建 本文的书写环境为mac,之后会补充windows下的差异 1、创建学习目录 mkdir l...

    Sourcelink 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<