【发布时间】:2023-04-08 13:07:01
【问题描述】:
我使用 Material-UI 开发 React 组件:
这很好用
MainView.js
import React, { Component } from 'react';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import { List, ListItem } from 'material-ui/List';
class MainView extends Component {
render() {
return (
<MuiThemeProvider>
<List>
<ListItem primaryText="item 1" />
<ListItem primaryText="item 2" />
<ListItem primaryText="item 3" />
</List>
</MuiThemeProvider>
);
}
}
export default MainView;
但是当我将<List> 移动到另一个组件时
MainView.js
import React, { Component } from 'react';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import MyListView from './MyListView';
// this import was removed as unused as <List> moved to MyListView:
// import { List, ListItem } from 'material-ui/List';
class MainView extends Component {
render() {
return (
<MuiThemeProvider>
<MyListView />
</MuiThemeProvider>
);
}
}
MyListView.js
import React, { Component } from 'react';
import { List, ListItem } from 'material-ui/List';
class MyListView extends Component {
render() {
return (
<List>
<ListItem primaryText="item 1" />
<ListItem primaryText="item 2" />
<ListItem primaryText="item 3" />
</List>
);
}
}
export default MyListView;
在这种情况下,我会收到:
未捕获的不变违规:removeComponentAsRefFrom(...): 只有一个 ReactOwner 可以有 refs。您可能正在删除对组件的引用 不是在组件的 `render` 方法中创建的,或者您 加载了多个 React 副本(详情:链接)。
main.js
ReactDOM.render((
<Provider store={store}>
<Router history={hashHistory}>
<Route path="/" component={App} />
<Route path="/test" component={MainView} />
</Router>
</Provider>
), document.getElementById('root'));
有什么建议可以避免这种情况吗?谢谢!
【问题讨论】:
-
您能在
MainView.js中显示所有import语句吗?
标签: javascript reactjs material-ui