一、react中的样式

  1. //1.class要写成className(class在react中代表类)
  2. <div className="App">
  3. hello world
  4. </div>

二、组件传值

2-1 定义组件

  1. //Header.js
  2. import React from 'react';
  3. function Header(){
  4. return (<div>component</div>)
  5. }
  6. export default Header;

2-2 引入组件

  1. class App extends React.Component {
  2. constructor(props) {
  3. super(props);
  4. this.state = {
  5. msg: "hello world",
  6. content:"我喜欢写React"
  7. }
  8. }
  9. render() {
  10. return (
  11. <div>
  12. <p className="App">{this.state.msg}</p>
  13. <Header msg={this.state.content}></Header>
  14. </div>
  15. )
  16. }
  17. }

2-3 组件接收传值

  1. function Header(props){
  2. return (<div>{props.msg}</div>)
  3. }

三、styled-components

3-1 安装依赖

  1. //避免样式命名空间重复
  2. yarn add styled-components

3-2 创建一个样式组件

  1. //components/Wrapper.js
  2. import styled from 'styled-components'
  3. const Title=styled.h1`
  4. font-size:1.5em;
  5. text-align:center;
  6. color:#c0c342
  7. `
  8. export default Title

3-3 使用

  1. import React from 'react';
  2. import Title from './components/Wrapper'
  3. class App extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. msg: "hello world",
  8. content:"我喜欢写React"
  9. }
  10. }
  11. render() {
  12. return (
  13. <div>
  14. <Title>styled</Title>
  15. <p className="App">{this.state.msg}</p>
  16. <Header msg={this.state.content}></Header>
  17. </div>
  18. )
  19. }
  20. }
  21. export default App;
  22. //嵌套
  23. import styled from 'styled-components'
  24. const Title=styled.h1`
  25. font-size:1.5em;
  26. text-align:center;
  27. color:#c0c342
  28. .one{
  29. color:blue;
  30. }
  31. h4{
  32. color:red
  33. }
  34. &:hover{
  35. color:green
  36. }
  37. `
  38. export default Title

四、组件

4-1 父组件给子组件传值

https://www.yuque.com/wangyuhuan/cn3b4m/xvgi8l#sVFbt

4-2 子组件给父组件传参

  1. //子组件
  2. import React from 'react';
  3. class Title extends React.Component{
  4. constructor(props){
  5. super(props)
  6. }
  7. render(){
  8. return (
  9. <h1 onClick={this.handleClick.bind(this,"11313")}>{this.props.msg}</h1>
  10. )
  11. }
  12. handleClick=(id)=>{
  13. console.log(id)
  14. this.props.deleteItem(id)
  15. }
  16. }
  17. export default Title
  18. //父组件
  19. import Title from './components/Title'
  20. class App extends React.Component {
  21. constructor(props) {
  22. super(props);
  23. this.state = {
  24. msg: "hello world",
  25. content:"我喜欢写React"
  26. }
  27. }
  28. render() {
  29. return (
  30. <div>
  31. <Title
  32. deleteItem={this.handleDelete.bind(this)}
  33. msg={this.state.msg}></Title>
  34. </div>
  35. )
  36. }
  37. handleDelete(id){
  38. console.log(id)
  39. }
  40. }
  41. export default App;

五、http请求

基本和vue完全相似

  1. //axios挂载到原型上
  2. import axios from 'axios';
  3. React.Component.prototype.$http = axios;
  4. componentDidMount() {
  5. var url="https://music.aityp.com/top/playlist"
  6. this.$http.get(url).then(res => {
  7. var playlists = res.data.playlists
  8. this.setState({
  9. playlists
  10. })
  11. })
  12. }