[React] Remove React PropTypes by using Flow Annotations (in CRA)
Starting from v15.5 if we wanted to use React's PropTypes we had to change our code to use a separate node module, now we can go one step further and get rid of that extra dependency just by using flow type annotations in our create-react-app project!
Install:
yarn add flow-bin
Scripts:
"flow": "flow"
Run:
npm run flow init
npm run flow
Add flow annotations:
// @flow import {createStore} from 'redux'; import reducer from './reducers/todo'; export type TodoType = { id: number, name: string, isComplete: boolean }; export type StateType = { todos: Array<TodoType>, currentTodo: string }; const initState: StateType = { todos: [ {id: 1, name: 'Render static UI', isComplete: true}, {id: 2, name: 'Create initial state', isComplete: false}, {id: 3, name: 'Render based on state', isComplete: true} ], currentTodo: 'Temp' }; const store = createStore(reducer, initState); export default store;
Import a flow type:
// @flow import React from 'react' import {connect} from 'react-redux'; import type {TodoType} from '../store'; const TodoItem = ({id, name, isComplete}: TodoType) => ( <li> <input type="checkbox" defaultChecked={isComplete} /> {name} </li> ) const TodoList = (props: {todos: Array<TodoType>}) => ( <div className="Todo-List"> <ul> {props.todos.map(todo => <TodoItem key={todo.id} {...todo} />)} </ul> </div> ); export default connect( (state) => ({todos: state.todos}) )(TodoList);
分类:
React
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-09-02 [Ramda] Compose and Curry
2015-09-02 [React] React Fundamentals: with-addons - ReactLink
2015-09-02 [JavaScript] Array.prototype.reduce in JavaScript by example
2015-09-02 [CSS] @keyframes