删除项目目录

  1. $ rm -rf node_modules
  2. $ cd ..
  3. $ rm -rf 项目名

创建基于ts的项目

$ create-react-app 项目名称 —template=typescript

  1. import { Component } from 'react'
  2. interface P { // 约定组件属性的数据类型
  3. }
  4. interface S { // 约定组件状态的数据类型
  5. name?: string
  6. }
  7. export default class App extends Component<P, S> {
  8. state = {
  9. name: 'syukinmei'
  10. }
  11. setName = () => {
  12. console.log(1)
  13. this.setState({
  14. name: 'ebiebi'
  15. })
  16. }
  17. render() {
  18. return (
  19. <>
  20. {this.state.name} <br />
  21. <Child content='ebiebi' setName={this.setName} />
  22. </>
  23. )
  24. }
  25. }
  26. interface PP {
  27. content: string
  28. setName: () => void
  29. }
  30. interface SS {
  31. flag: boolean
  32. }
  33. class Child extends Component<PP, SS>{
  34. constructor(props: PP) {
  35. super(props)
  36. this.state = {
  37. flag: true
  38. }
  39. }
  40. render() {
  41. return (
  42. <>
  43. <button onClick={this.props.setName}>setName</button>
  44. {this.props.content}
  45. </>
  46. )
  47. }
  48. }
  49. // Child组件为函数式组件时
  50. interface PP {
  51. content: string
  52. setName: () => void
  53. }
  54. function Child(props:PP){
  55. return(
  56. <>
  57. {props.content}
  58. <button onClick={props.setName}>setName</button>
  59. </>
  60. )
  61. }

image.png