5、React组件间通信
通过props 传递 共同的数据放在父组件上, 特有的数据放在自己组件内部(state) 通过props 可以传递一般数据和函数数据, 只能一层一层传递 一般数据–>父组件传递数据给子组件–>子组件读取数据 函数数据–>子组件传递数据给父组件–>子组件调用函数 使用消息订阅(subscribe)-发布(publish)机制 使用工具库PubSubJS工具库实现。 1yarn add pubsub-js 使用 123import PubSub from 'pubsub-js' //引入PubSub.subscribe('delete', function(msg,data){ }); //订阅PubSub.publish('delete', data) //发布消息 发布消息可以理解为触发事件,订阅消息可以理解为监听事件。 通过redux传递 待补充
4、React发送Ajax请求
Axios示例 1234567891011121314151617181920212223class MostStart extends React.Component { state = { repoName: '', repoUrl: '' }async componentDidMount() { // 发送Ajax请求 const url = `https://api.github.com/search/repositories?q=r&sort=stars` const { data: res } = await axios.get(url) const { html_url, name } = res.items[0] this.state.repoUrl = html_url this.state.repoName = name this.setState( ...
3、React脚手架
脚手架 1234npm install -g create-react-appcreate-react-app hello-reactcd hello-reactnpm start 基于脚手架编写项目 入口文件./src/index.js 123456import React from 'react';import ReactDOM from 'react-dom';import './index.css'import App from './components/app'ReactDOM.render(<App />, document.getElementById('root')); 组件App 1234567891011import React,{Component} from 'react'import Logo from '../logo.svg'export default class Ap ...
2、React模块与组件
模块与组件的理解 模块 向外提供特定功能的js 程序, 一般就是一个js 文件 复用js, 简化js 的编写, 提高js 运行效率 组件 用来实现特定(局部)功能效果的代码集合(html/css/js) 复用编码, 简化项目编码, 提高运行效率 组件的基本使用 创建组件有两种方式 工厂函数组件 简单组件,通过函数返回值即可。函数名就是组件(标签)名。 1234function MyComponent() { return <h2>工厂函数组件(简单组件)</h2>}ReactDOM.render(<MyComponent />, document.getElementById('test')) ES6类组件 复杂组件,通过ES6类中的render方法。 123456class MyComponent2 extends React.Component { render() { return <h2>ES6类组件(复杂组件)< ...
1、React基础用法及JSX
基本使用 123456789101112131415<body> <div id="test"></div> <!-- 核心库 --> <script src="../../js/react.development.js"></script> <!-- 提供DOM操作的扩展库 --> <script src="../../js/react-dom.development.js"></script> <!-- 解析JSX语法代码转为纯JS --> <script src="../../js/babel.min.js"></script> <script type='text/babel'> // 告诉babel.js解析里面的jsx代码 // 1. 创建虚拟DOM元素对象 v ...