[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);
复制代码

 

posted @   Zhentiw  阅读(233)  评论(0编辑  收藏  举报
编辑推荐:
· 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
点击右上角即可分享
微信分享提示