加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – React / Reflux:使用装饰器将带有mixins的类转换为E

发布时间:2020-12-15 05:05:32 所属栏目:百科 来源:网络整理
导读:我正在尝试es6-ify以下React-Reflux代码: var TimeStore = Reflux.createStore({ listenables: [TimeActions],onTick: function(tick) { .... }})var Watch = React.createClass({ mixins: [Reflux.connect(TimeStore,'tick')],... Source 我不知道如何使用
我正在尝试es6-ify以下React-Reflux代码:
var TimeStore = Reflux.createStore({
    listenables: [TimeActions],onTick: function(tick) {
        ....    
    }
})

var Watch = React.createClass({
    mixins: [Reflux.connect(TimeStore,'tick')],...

Source

我不知道如何使用react-decorator转换它.这就是我将其转换为:

const SomeDecorator = MixinDecorator(
    'TimerActions',// displayName
    Reflux.connect(TimeStore,'tick')
);

@SomeDecorator
class Watch extends React.Component {
    ...

它与babel编译(舞台设置为0)但不能很好地工作.有任何建议如何解决这个问题?此外,是否有可能es6-ify商店?

完全跳过mixins.
class AppCtrlRender extends Component {
        binder(...methods) { methods.forEach( (method) => this[method] = this[method].bind(this) ); }

        render() {
            var data = this.state.Data;
            data = JSON.stringify(data,null,2);
            var data2 = this.state.Data2;
            data2 = JSON.stringify(data2,2);
            var data3 = this.state.Data3;
            data3 = JSON.stringify(data3,2);
            return (
                <div id='AppCtrlSty' style={AppCtrlSty}>
                    React 1.3 ReFlux with WebSocket<br/><br/>
                    {data}<br/><br/>
                    Data2: {data2}<br/><br/>
                    Data3: {data3}<br/><br/>
                </div>
            );
        }
    }

    function getState() {
        return {
            Data: BasicStore.getData(),Data2: BasicStore.getData2(),Data3: BasicStore.getData3()
        };
    };

    export default class AppCtrl extends AppCtrlRender {
        constructor() {
            super();
            this.state = getState();
            this.binder('storeDidChange');
        }

        componentDidMount() { this.unsubscribe = BasicStore.listen(this.storeDidChange); }
        componentWillUnmount() { this.unsubscribe(); }
        storeDidChange() { this.setState(getState()); }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读