当前位置: 首页 > wzjs >正文

经网站建设是什么经营范围微信公众号网站开发注意

经网站建设是什么经营范围,微信公众号网站开发注意,苏州建设厅网站,vps 内存影响 网站TypeScript 为 React 开发带来了强大的类型安全保障,这里解析常见的一些TS写法: 一、组件基础类型 1. 函数组件定义 // 显式声明 Props 类型并标注返回值 interface WelcomeProps {name: string;age?: number; // 可选属性 }const Welcome: React.FC…

TypeScript 为 React 开发带来了强大的类型安全保障,这里解析常见的一些TS写法:

一、组件基础类型

1. 函数组件定义

// 显式声明 Props 类型并标注返回值
interface WelcomeProps {name: string;age?: number; // 可选属性
}const Welcome: React.FC<WelcomeProps> = ({ name, age = 18 }) => (<div>Hello {name}, 年龄 {age}</div>
);// React 18+ 需要显式声明 children(如果用到)
interface CardProps {children: React.ReactNode; 
}const Card: React.FC<CardProps> = ({ children }) => (<div className="card">{children}</div>
)

2. 类组件写法

type CounterState = { count: number };class Counter extends React.Component<{}, CounterState> {state: CounterState = { count: 0 };handleClick = () => {this.setState(prev => ({ count: prev.count + 1 }));};render() {return <button onClick={this.handleClick}>点击次数:{this.state.count}</button>;}
}

二、Props 高级用法

1. 联合类型与类型守卫

type User = { id: number;type: 'admin' | 'user';email?: string;accessLevel?: number;
};const UserProfile = ({ user }: { user: User }) => {if (user.type === 'admin') {return <div>管理员权限:{user.accessLevel}</div>;}return <div>用户邮箱:{user.email}</div>;
};

2. 默认值与类型推断

interface ButtonProps {type?: 'primary' | 'dashed'; // 可选类型自动包含 undefinedsize?: 'large' | 'medium';
}const MyButton = ({   type = 'primary',   size = 'medium' }: ButtonProps) => (<button className={`${type} ${size}`}>按钮</button>
);

三、Hooks 类型实战

1. useState 精确控制

const [user, setUser] = useState<User | null>(null); // 联合类型处理异步数据// 明确数组项类型
const [todos, setTodos] = useState<{ id: string; text: string }[]>([]);

2. useRef 双重用法

// 操作 DOM
const inputRef = useRef<HTMLInputElement>(null);useEffect(() => {if (inputRef.current) {inputRef.current.focus(); // 需要非空校验}
});// 保存可变值
const timerRef = useRef<number>();
timerRef.current = setInterval(() => {});

3. useContext 类型安全

type Theme = 'light' | 'dark';
const ThemeContext = createContext<Theme>('light');const App = () => (<ThemeContext.Provider value="dark"><Child /></ThemeContext.Provider>
);const Child = () => {const theme = useContext(ThemeContext); // 自动推断为 Theme 类型return <div className={theme}>当前主题</div>;
}

四、事件处理与泛型组件

1. 表单事件精准捕获

const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {console.log(e.target.value);
};<input onChange={handleChange} />// 鼠标事件
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {e.preventDefault();const rect = e.currentTarget.getBoundingClientRect(); // 正确访问 DOM 属性
};

2. 让组件更灵活:泛型组件

interface ListProps<T> {data: T[];renderItem: (item: T) => React.ReactNode;
}function GenericList<T>({ data, renderItem }: ListProps<T>) {return (<ul>{data.map((item, i) => (        <li key={i}>{renderItem(item)}</li>))}    </ul>);
}// 使用
<GenericList<string> data={['a', 'b', 'c']} renderItem={(str) => <div>{str.toUpperCase()}</div>} 
/>

五、常见类型问题速查

// 1. 类型断言:谨慎使用
const element = document.getElementById('root') as HTMLElement;// 2. 处理可能未初始化的 ref
const videoRef = useRef<HTMLVideoElement>(null!); // 初始化后使用可使用非空断言// 3. 处理第三方库类型
import { RouteComponentProps } from 'react-router-dom';interface MatchParams { id: string; }
type Props = RouteComponentProps<MatchParams>;const ProductPage: React.FC<Props> = ({ match }) => (<div>商品ID{match.params.id}</div>
);

文章转载自:

http://muE3WLUX.mgfnt.cn
http://iuL6ssit.mgfnt.cn
http://NquIJ9qm.mgfnt.cn
http://LTXoojrE.mgfnt.cn
http://zuwUtZz8.mgfnt.cn
http://YV5EGnLO.mgfnt.cn
http://FxyrTN36.mgfnt.cn
http://49xdfJHI.mgfnt.cn
http://XlZ0N18c.mgfnt.cn
http://MVqpRKj9.mgfnt.cn
http://US1SftV3.mgfnt.cn
http://e7VkGM0B.mgfnt.cn
http://Ccmdp045.mgfnt.cn
http://owrb3iNy.mgfnt.cn
http://fb0NGBUm.mgfnt.cn
http://Pc8facyA.mgfnt.cn
http://43sl8aeg.mgfnt.cn
http://rsBhhOOj.mgfnt.cn
http://nej3Zx1S.mgfnt.cn
http://vmoNnIrw.mgfnt.cn
http://jsFhNLB4.mgfnt.cn
http://vK2vixoe.mgfnt.cn
http://OrmKOSEj.mgfnt.cn
http://qFl3TEMw.mgfnt.cn
http://eFNFZf5c.mgfnt.cn
http://ywXc3UTK.mgfnt.cn
http://Y9aUC3HK.mgfnt.cn
http://fOlFk4dJ.mgfnt.cn
http://kiZbTue4.mgfnt.cn
http://fwHSCmCe.mgfnt.cn
http://www.dtcms.com/wzjs/741825.html

相关文章:

  • 北京app手机网站制作公司网站建设价格
  • 建设高校网站的现实意义odoo网站建设
  • 阿里巴巴做网站营销有没有用电子商务网站建设与管理总结
  • 企业网站如何建设温州可以做驾校推广的网站
  • 网站开发个人工作室信息网站有哪些
  • 用什么做响应式网站春雨app直播免费看
  • 网站没有权重广州自助公司建网站企业
  • 杭州网站搜索排名网站推广优化如何做
  • 网站首屏高度用fullpage做的网站
  • 鹤壁做网站价格南京网站快速排名提升
  • 局域网内网站建设的步骤过程有没有电商设计的网站参考
  • 教育网站制作实训报告网站优化的方法有哪些
  • 网站模板加后台福州网站排名优化
  • 关于建设网站的报告广东个人备案网站内容
  • 软件开发费和网站建设集团网站设计方案
  • 做SEO用dede还是wordpress游戏优化软件
  • 北京城建设计集团网站外贸网站建设青岛
  • 邢台网站网页设计一等一网站建设
  • 番禺区pc端网站建设兔展在线制作网站
  • 在线教育网站建设方案org后缀的网站
  • 做企业网站需要什么广东新闻频道直播
  • 甘肃住房城乡建设厅网站首页wordpress退出
  • 广东省高校质量工程建设网站同心食品厂网站建设项目任务分解
  • 网站开发运营公司系统里看不到wordpress
  • 怎么查寻一个网站做的竞价免费网站设计定制
  • 衡水网站制作设计网络推广的几种主要方法
  • 设计接单子网站做排行榜的网站
  • 网站做管制户外刀具网站后台上传内容前台首页不显示
  • 淄博什么兼职的网站建设锚文本外链网站
  • 网站建立多少钱网站开发团队人员