美文网首页
使用ts和react创建一个函数组件

使用ts和react创建一个函数组件

作者: sweetBoy_9126 | 来源:发表于2020-04-17 16:19 被阅读0次

创建

yarn create react-app ts-react-demo --typescript

写一个button组件

  1. 接受size属性
  • button.tsx
import React from 'react'
export default function() {
    return <div className="button">button</div>
}
  • index.tsx
import Button from './button'

ReactDOM.render(
    <div>Hello World<Button></Button></div>, 
    document.getElementById('root')
);

让button支持size
在使用button的时候传入一个size,然后我们需要在组件内部通过prop声明接受的这个size的类型

  • button.tsx
interface Iprops {
    size?: string
}
export default function(Props: Iprops) {
    return <div className={`button ${Props.size}`}>button</div>
}
  • index.tsx
import Button from './button'

ReactDOM.render(
    <div>
        <Button size="small"></Button>
        <Button></Button>
        <Button size="big"></Button>
    </div>, 
    document.getElementById('root')
);
  1. 可以设置按钮内容

我们现在直接在我们引用Button的时候里面写内容会报错,它说我们缺少children属性,所以我们就要在接口里添加一个children

  • button.tsx
interface Iprops {
    size?: string,
    children?: string
}
export default function(Props: Iprops) {
    return <div className={`button ${Props.size}`}>{Props.children}</div>
}

我们还想让内容里面可以使用html标签

它说不能把Element类型分配给string,所以我们要给children加一个Element类型

interface Iprops {
    size?: string,
    children?: string | JSX.Element
}

让内容接受多个标签

<Button size="small">
    <span>小改改</span>
    <span>你瞧瞧</span>
</Button>

children?: string | JSX.Element | JSX.Element[]

问题:正常情况下每个组件都会有children,如果我们有多个组件的话,那么你每个里面都得写children,写起来就会很繁琐,那么我们怎么简化我们的代码那?
解决办法:使用React的函数组件
声明一个变量类型为React的函数组件然后把我们定义的接口作为类型传进去,react的函数组件会帮我声明一个children

interface Iprops {
    size?: string
}
const Button: React.FunctionComponent<Iprops> = function(Props) {
    return <div className={`button ${Props.size}`}>{Props.children}</div>
}
export default Button
支持点击事件
interface Iprops {
    size?: string,
    onClick?: React.MouseEventHandler
}
const Button: React.FunctionComponent<Iprops> = function(Props) {
    return <div className={`button ${Props.size}`} onClick={Props.onClick}>{Props.children}</div>
}

相关文章

  • React学习笔记_02

    React 组件和状态 react 组件 1,组件的两种创建方式1,函数组件2,类组件 1,函数组件:使用 JS ...

  • 组件与props

    创建组件 函数式创建函数组件 ES6语法创建类组件 将组件渲染至页面 React约定,组件名称使用大写开头,如

  • 使用ts和react创建一个函数组件

    创建 写一个button组件 接受size属性 button.tsx index.tsx 让button支持siz...

  • React学习笔记二-组件创建

    React中创建组件 第一种 - 创建组件的方式 使用构造函数来创建组件,如果要接收外界传递的数据,需要在构造函数...

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • React - 类组件创建

    React创建组件有两种方式 函数式组件 类组件函数式组件已经学过,现在看下类组件怎么写。 函数式组件和类组件区别...

  • React高阶组件--render props、高阶组件(Rea

    React - render props和高阶组件 1,render props模式 使用步骤 1,创建一个组件,...

  • React中的this绑定

    在编写react组件时经常需要进行函数的this绑定,使用ES6方式创建的组件中的函数必须手动绑定this,thi...

  • react项目的基础方法详解

    组件创建(Component) 1、函数式 组件无状态组件,没有生命周期,只是一个返回react元素的函数 2、类...

  • 2020 动手写个 react (3)

    组件 组件可能是函数还可能是类,我们知道只要继承 Component 类就是 react 的组件。 创建一个函数,...

网友评论

      本文标题:使用ts和react创建一个函数组件

      本文链接:https://www.haomeiwen.com/subject/rofdyctx.html