reactjs – 使用Material Design Lite与React

前端之家收集整理的这篇文章主要介绍了reactjs – 使用Material Design Lite与React前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在使用React的现有项目上使用MDL,而且我遇到了几个问题。在第一次加载时,事情似乎很好,尽管有很多警告信息:

Warning: ReactMount: Root element has been removed from its original container. New container:

对于具有MDL识别的类的每个DOM元素(例如:mdl-layout,mdl-layout__content等),这种情况几乎发生在任何DOM变化上。

此外,当更改路由时,会出现“Invariation Violation”错误

Uncaught Error: Invariant Violation: findComponentRoot(…,.0.2.0.1.1.0.0.0.0): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g.,by the browser)…

这是否意味着MDL和React几乎不兼容?

更新:如果class =“mdl-js-layout”的元素不是reactjs render函数中最顶层的元素,则该问题将消失。一旦我包裹了这个元素,一切都是好的。

尝试将DIV元素包裹在外面,我只是以这种方式解决了这个问题。

如果您使用Redux React MDL React-Router,您可以将DIV元素包装到Provider元素中:

import React,{ createStore }      from 'react';
import { Provider }                from 'react-redux';
import Router,{ HistoryLocation } from 'react-router';

var store = createStore();

Router.run(routes,HistoryLocation,(Handler,state) => {
    React.render((
        <div>
            <Provider store={store}>
            {
                () => <Handler {...state} />
            }
            </Provider>
        </div>
    ),document.body);
});

希望可以帮助你:)

原文链接:https://www.f2er.com/react/301376.html

猜你在找的React相关文章