React Hoc

React Hoc

(HOC)是React中的高阶组件,用来重用组件逻辑,高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。 有点类似给原组件打补丁升级强化。

使用:

// 定义改变bool的hoc应用
function TestHoc(WrappedComponent) {
    const useA = (props) => {
        const [state, setState] = useState(false);
        const newProps = {
            state,
            setState,
            ...props
        }
        return  <WrappedComponent {...newProps}/>
    }
    return useA;
}
// TestHoc函数接收一个组件作为参数,并返回一个新组件,
//新组建可以接收一个props,在props上新增,state和setState

// 组件使用 -- 定义需要升级的组件Test
const Test = ({state, setState}) => {
    return (
        <>
            <p>{ state===false?'false': 'true' }</p>
            <button onClick={()=>setState(false)}>点我false</button>
            <button onClick={()=>setState(true)}>点我true</button>
        </>
    );
};

// 调用
{ TestHoc(Test2)() }

嵌套使用

// 定义获取input值的hoc应用
function TestHocInput(Component) {
    const useB = () => {
        const [val, setValue] = useState();
        function testInput(e) {
            setValue(e.target.value);
        }
        const newState ={
            val,
            testInput
        }
        return <Component {...newState} />
    }
    return useB;
}

// Test 组件
const Test = ({state, setState, testInput, val}) => {
    return (
        <>
            <p>{ state===false?'false': 'true' }</p>
            <button onClick={()=>setState(false)}>点我false</button>
            <button onClick={()=>setState(true)}>点我true</button>
            { val }
            <input type="text" onInput={testInput} value={val}/>
        </>
    );
};

// 嵌套调用
{ TestHocInput(TestHoc(Test))() }

//可以多个调用
{ TestHocInput(TestHoc(Test))() }
{ TestHocInput(Test)() }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值