专栏名称: 前端JavaScript
分享 | 学习 | 交流 | 原创 分享是学习的开始;学习不必要从头开始,是从现在开始;交流能沟通你我,提高你的学识;期待你的加入!!! web前端技术交流,JavaScript,HTML5,CSS3……
目录
相关文章推荐
51好读  ›  专栏  ›  前端JavaScript

[S3-E400]React.js组件化开发第二步(添加样式及数据请求)

前端JavaScript  · 公众号  · Javascript  · 2017-08-10 07:31

正文

第一步主要说了一下框架的搭建及组件与路由的创建;


接下来主要是样式的添加及从后台获取数据:


添加样式美化页面

化美化一下我们的公共组件: 在 /src/components/Common/ 目录下添加 NavBar.css:

.nav-bar {

  margin-top: 0;

  margin-bottom: 0;

  padding-left: 0;

  list-style: none;

  display: flex;

  text-align: center;

  background-color: #fff;

  border-bottom: 1px solid #e5e5e5;

}

.nav-bar li {

  flex: 1;

  border-right: 1px solid #e5e5e5;

}

.nav-bar a {

  display: block;

  color: #333;

  padding: 10px;

  text-decoration: none;

}

.nav-bar .source {

  font-size: 12px;

  padding: 10px;

  border-right: 0 none;

}

样式要应用, 当然还必须得在组件中引用才行的哟, 修改/src/components/Common/NavBar.js:

import React from 'react';

import {

  Link,

} from 'react-router-dom';

import './NavBar.css';


const NavBar = (props) => (

 

       

  • Home
  •    

  • About
  •    

  • List
  •    

  • 来源于: {props.title}
  •  

);


export default NavBar;

当然, 也可以开添加一些公共样式, 这样在每个组件内都可以使用, 修改/src/index.css:

body {

  margin: 0;

  padding: 0;

  font-family: sans-serif;

  background-color: #f5f5f5;

}

.content {

  margin: 0;

  padding: 20px;

  font-size: 18px;

  background-color: #fff;

  border-bottom: 1px solid #e5e5e5;

}

因为 index.css 在 index.js 中引入了, 我们在其他组件中不用引用, 直接使用就好啦, 修改关于组件/src/components/About/About.js:

import React from 'react';

import NavBar from '../Common/NavBar';


const About = () => (

 

   

   

这是关于页

 

);


export default About;

其他组件的修改也是一样的, 即在组件中给 className 贬值为样式名即可;

现在命令行切到项目根目录, 执行yarn run start启动项目, 在浏览器内查看添加样式后的效果;


从服务端获取数据

这里使用的 axios来获取数据, 先安装包:

$ yarn add axios

下面的实例演示一下

在src目录内创建一个service的目录, 并创建一个 Connect.js 的文件:

import React, { Component } from 'react';

import axios from 'axios';



const Connect = (MyComponent) => {

  return class extends Component {

    constructor(props) {

      super(props);

      this.state = {

        data: [],

      };

    }


    componentDidMount() {

      axios.get('http://rapapi.org/mockjsdata/23242/v1/question/page')

        .then(res => res.data)

        .then(data => {

          this.setState({

            data: data.data.recordList

          });

        })

      

    }


    render() {

      return

    }

  }

}


export {

  Connect,

}

修改列表组件/src/components/List/List.js:

import React from 'react';

import NavBar from '../Common/NavBar';

import { Connect } from '../../service/Connect';

import './List.css';


const List = (props) => {

  return (

   

     

     

            {

              props.data && props.data.length > 0 &&

              props.data.map((item, index) => (

               

  •               名称:

                  { item.answer }

                 

               

  •           ))

            }

         

   

  );

};


export default Connect(List);

现在命令行切到项目根目录, 执行 yarn run start 启动项目, 浏览器内查看 列表 组件, 是不是从服务端获取的数据了;

最后

现在跟据这些所掌握的内容, 就可以开始的一个完整的 React.js 项目了。源码(https://github.com/YuanWing/react-learns/tree/two-step)


转自:https://segmentfault.com/a/1190000010484283

作者 : YuanWing


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如果文章不错,请转发的朋友圈!

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 ==========阅读原文==========