React学习笔记九-高阶函数与函数柯里化
// 引入React及组件相关库
import React from 'react';
import { Button, Input } from 'antd';
import { useState } from 'react';
// 高阶组件:接受redux的connect函数作为参数并返回一个新组件
const enhance = (connect) => (Component) => {
const EnhanceComponent = (props) => {
const [count, setCount] = useState(0);
const increaseCount = () => setCount(count + 1);
const WrappedComponent = connect(({ count }) => ({ count }))(Component);
return (
<div>
<Input value={count} onChange={() => {}} />
<Button onClick={increaseCount}>增加</Button>
<WrappedComponent {...props} />
</div>
);
};
return EnhanceComponent;
};
// 函数柯里化:接受函数并返回接受余下参数的新函数
const curry = (fn) => (...args1) => (...args2) => fn(...args1, ...args2);
// 使用函数柯里化创建一个处理Redux action的高阶函数
const createAction = (type) => curry((payload, extra) => ({ type, payload, ...extra }));
export { enhance, createAction };
这个代码示例展示了如何使用高阶组件来封装React组件,并通过函数柯里化创建可以处理Redux action的高阶函数。这种模式在React和Redux应用程序中非常有用,它简化了组件的创建和维护,并提高了代码的可复用性。
评论已关闭