# React+Typescript **Published by:** [cxy666](https://paragraph.com/@cxy666/) **Published on:** 2022-02-08 **URL:** https://paragraph.com/@cxy666/react-typescript ## Content 函数组件//推荐使用✅ better const WrapComponent: React.FC<ExtendedProps> = (props) => { // return ... }; //直接使用 export default WrapComponent; // 或者 export default function (props: React.PropsWithChildren<SpinProps>) { // return ... } const Notice: React.FC = () => {} formsport * as React from 'react' type changeFn = (e: React.FormEvent<HTMLInputElement>) => void const App: React.FC = () => { const [state, setState] = React.useState('') const onChange: changeFn = e => { setState(e.currentTarget.value) } ✅ better const onSubmit = (e: React.SyntheticEvent) => { e.preventDefault() const target = e.target as typeof e.target & { password: { value: string } } // 类型扩展 const password = target.password.value } return ( <form onSubmit={onSubmit}> <input type="text" value={state} onChange={onChange} /> </form> ) } React HookHook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数。useState调用useState() Hook 来启用函数组件中的状态。useState(initialValue)的第一个参数initialValue是状态的初始值。[state, setState] = useState(initialValue)返回一个包含2个元素的数组:状态值和状态更新函数。使用新值调用状态更新器函数setState(newState)更新状态。或者,可以使用一个回调setState(prev => next)来调用状态更新器,该回调将返回基于先前状态的新状态。调用状态更新器后,React 确保重新渲染组件,以使新状态变为当前状态。 demo:按按钮新增灯泡或者开关灯import React, { useState } from 'react'; function Bulbs() { const [on, setOn] = useState(false); const [count, setCount] = useState(1); const lightSwitch = () => setOn(on => !on); const addBulbs = () => setCount(count => count + 1); const bulb =
; const bulbs = Array(count).fill(bulb); return ( <>