这似乎很基本,我觉得我必须误解它是如何工作的。我有一个简单的演示组件,它用三个ListItems呈现一个material-ui List。每个列表项目右侧都有一个使用rightToggle道具实现的切换。为了演示的目的,每个切换都以不同的方式生成。正确的Material-UI ListItem组件切换
第一个是一个基本的材料-UI切换组件。第二个是一个自定义组件包装一个切换,第三个是通过函数调用生成的。
一些代码:
import React from 'react';
import Paper from 'material-ui/Paper';
import { List, ListItem } from 'material-ui/List';
import Toggle from 'material-ui/Toggle';
import MyToggleComponent from './MyToggleComponent';
const myToggleFunction = id => <Toggle onClick={() => console.log(id)} />;
const TestPage =() =>
<div>
<Paper style={{ width: 500, padding: 15, margin: 25 }}>
<List>
<ListItem
primaryText="This is the first list item"
secondaryText="This toggle for this item is directly defined"
rightToggle={<Toggle onClick={() => console.log('1 - clicked')} />}
/>
<ListItem
primaryText="This is the second list item"
secondaryText="This toggle is generated from a component"
rightToggle={<MyToggleComponent text="2 - clicked" />}
/>
<ListItem
primaryText="This is the third list item"
secondaryText="This toggle is generated programatically"
rightToggle={myToggleFunction('3 - clicked')}
/>
</List>
</Paper>
</div>;
export default TestPage;
和自定义组件 - 非常基本的
import React from 'react';
import PropTypes from 'prop-types';
import Toggle from 'material-ui/Toggle';
const MyToggleComponent = ({ text }) => <Toggle onClick={() => console.log(text)} />;
MyToggleComponent.propTypes = {
text: PropTypes.string.isRequired,
};
export default MyToggleComponent;
结果:
所有三种切换产生预期的控制台输出。第一个和第三个项目的渲染效果与我期望的在列表项右侧的切换一样。但第二个,使用自定义组件,呈现列表项上方的切换。谁能解释为什么?
您可以发布截图? –
@ArslanTariq - 完成 – amay