声明类组件
interface Props {
sex:string
}
interface State {
name: string;
}
class student extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = {
name: "不写作文的李华"
};
}
render() {
return (
<div>
name:{this.state.name}
sex:{this.props.sex}
</div>
);
}
}
函数组件
interface IProps {
id: number;
name: string;
}
const Robot: React.FC<IProps> = ({ id, name }) => {
return (
<li>
<p>{name}</p>
<p>{id}</p>
</li>
);
};
interface IProps {
id: number;
name: string;
}
const Robot = ({ id, name }:IProps) => {
return (
<li>
<p>{name}</p>
<p>{id}</p>
</li>
);
};
CSS
- 使用办法1,创建一个style.module.css(里面直接写css)
创建style.d.ts文件,里面写下如下代码
declare module "*.css" {
const css: { [key: string]: string };
export default css;
}
直接在txs文件中引用(使用import语句)
- 使用办法2,css变量,变量类型为CSSProperties
const oneStyle:CSSProperties = {
width:"500px",
height:"400px"
}
图片
事件处理函数和事件
- 可以给事件处理函数定义类型,也可以只给事件定义类型,或者同时写上也ok
- 处理函数的类型(请百度)
const changeFunction:React.ChangeEventHandler<HTMLInputElement> = (event)=>{}
return(
<div>
<input onChange={changeFunction}/>
</div>
)
const clickFunction = (event:React.MouseEvent<HTMLButtonElement, MouseEvent>)=>{}
return(
<div>
<button onClick={clickFunction}/>
</div>
)
axios
import axios, { AxiosInstance, AxiosRequestConfig, AxiosPromise,AxiosResponse } from 'axios';
class HttpRequest {
constructor(public baseUrl: string) {
this.baseUrl = baseUrl;
}
public request(options: AxiosRequestConfig): AxiosPromise {
const instance: AxiosInstance = axios.create()
options = this.mergeConfig(options)
this.interceptors(instance, options.url)
return instance(options)
}
private interceptors(instance: AxiosInstance, url?: string) {
}
private mergeConfig(options: AxiosRequestConfig): AxiosRequestConfig {
return Object.assign({ baseURL: this.baseUrl }, options);
}
}
export default HttpRequest;
hooks中注意点
const [count, setCount] = useState<number>(1)
const [count, setCount] = useState<number | null>(null);
const [user, setUser] = React.useState<IUser>({} as IUser);
const nameInput = React.useRef<HTMLInputElement>(null)
const nameInput = React.useRef<HTMLInputElement | null>(null);
interface ICo1or {
color: string;
}
const colorcontext = React.createcontext<Ico1or>)({
color: "green" });
路由
import {RouteComponentProps} from "react-router-dom";
class App extends React.Component<RouteComponentProps,IState>{
....
}