zoukankan      html  css  js  c++  java
  • 状态提升

    import './index.html';
    import './index.global.css';
    import * as ReactDOM from 'react-dom';
    import * as React from 'react';
    
    var A: React.FC<{ v: number, setV: React.Dispatch<React.SetStateAction<number>> }> = ({ v, setV }) => {
    
        const [ s, setS ] = React.useState(v - 1);
    
        var ch = React.useCallback((e: React.SyntheticEvent<HTMLInputElement>) => {
            setS(parseInt(e.currentTarget.value) || 0);
        }, [ ]);
    
        React.useEffect(() => {
            setS(v - 1);
        }, [ v ]);
    
        React.useEffect(() => {
            setV(s);
        }, [ s ]);
    
        return < >
            <input type="text" value={s} onChange={ch} />
        </>
    }
    
    var B: React.FC<{ v: number, setV: React.Dispatch<React.SetStateAction<number>> }> = ({ v, setV }) => {
    
        const [ s, setS ] = React.useState(v + 1);
    
        var ch = React.useCallback((e: React.SyntheticEvent<HTMLInputElement>) => {
            setS(parseInt(e.currentTarget.value) || 0);
        }, [ ]);
    
        React.useEffect(() => {
            setS(v + 1);
        }, [ v ]);
    
        React.useEffect(() => {
            setV(s - 1);
        }, [ s ]);
    
        return < >
            <input type="text" value={s} onChange={ch} />
        </>
    }
    
    var App: React.FC<{ }> = ({ }) => {
    
        const [ v, setV ] = React.useState(20);
    
        React.useEffect(() => {
        }, []);
    
        return < >
            <div>real: {v}</div>
            <A v={v} setV={setV} />
            <B v={v} setV={setV} />
        </>
    }
    
    ReactDOM.render(
        < >
            <App />
        </>
    , /* container */ document.querySelector('#app'));
    
    var A = function (_a) { var v = _a.v, setV = _a.setV; var _b = React.useState(v - 1), s = _b[0], setS = _b[1]; var ch = React.useCallback(function (e) { setS(parseInt(e.currentTarget.value) || 0); }, []); React.useEffect(function () { setS(v - 1); }, [v]); React.useEffect(function () { setV(s); }, [s]); return React.createElement(React.Fragment, null, React.createElement("input", { type: "text", value: s, onChange: ch })); }; var B = function (_a) { var v = _a.v, setV = _a.setV; var _b = React.useState(v + 1), s = _b[0], setS = _b[1]; var ch = React.useCallback(function (e) { setS(parseInt(e.currentTarget.value) || 0); }, []); React.useEffect(function () { setS(v + 1); }, [v]); React.useEffect(function () { setV(s - 1); }, [s]); return React.createElement(React.Fragment, null, React.createElement("input", { type: "text", value: s, onChange: ch })); }; var App = function (_a) { var _b = React.useState(20), v = _b[0], setV = _b[1]; React.useEffect(function () { }, []); return React.createElement(React.Fragment, null, React.createElement("div", null, "real: ", v), React.createElement(A, { v: v, setV: setV }), React.createElement(B, { v: v, setV: setV })); };

    ReactDOM.render(React.createElement(App), $('div#my_app')[0]);

  • 相关阅读:
    TestLink学习六:TestLink1.9.13工作使用小结
    TestLink学习五:TestLink1.9.13和JIRA6.3.6的集成
    TestLink学习四:TestLink1.9.13使用说明
    TestLink学习三:发送邮件的两种配置方法
    TestLink学习二:Windows搭建TestLink环境
    TestLink学习一:Windows搭建Apache+MySQL+PHP环境
    Python:Ubuntu上使用pip安装opencv-python出现错误
    Python:Ubuntu上出现错误 Could not load dynamic library 'libnvinfer.so.6' / 'libnvinfer_plugin.so.6'
    mybatis-generator二次开发总结
    动态代理
  • 原文地址:https://www.cnblogs.com/develon/p/15303636.html
Copyright © 2011-2022 走看看