【发布时间】:2021-05-25 02:43:01
【问题描述】:
我的css不是很好,我面临很多困难......我正在尝试在material-ui的帮助下制作一个react todo应用程序......我的问题是我想显示todo项目在 material-ui 列表中,其中列表 1) 第一项将是复选框 2) 第二个待办事项文本 3) 第三个编辑和删除按钮
渲染mui列表的代码
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { todoDeleted, todoUpdated, todoCompleted } from '../Slices/TodoSlice';
import { Button, Checkbox, List, ListItem, ListItemSecondaryAction, ListItemText, makeStyles } from '@material-ui/core'
const useStyles = makeStyles({
listRoot: {
display: 'flex',
alignItems: 'center',
backgroundColor: '#fce4ec',
borderWidth: "1px",
borderColor: "#aaaaaa",
borderStyle: "solid",
borderRadius: "20px",
height: "35px",
margin: "5px 5px"
},
item: {
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
width: "500px"
}
})
export default function TodoItem({ todo, i }) {
const classes = useStyles()
const dispatch = useDispatch();
const [edit, setEdit] = useState(false);
const [text, setText] = useState(todo.text);
const handleUpdate = () => {
dispatch(
todoUpdated({
id: todo.id,
text,
})
);
if (edit) {
setText(todo.text);
}
setEdit(!edit);
};
return (
<div className={classes.listRoot}>
<List>
<ListItem className={classes.item}>
<ListItemText>
{todo.done ? (
<p>
<del>{todo.text}</del>
</p>
) : (
<h4>
{edit ? (
<input
type="text"
placeholder={text}
value={text}
onChange={(e) => setText(e.target.value)}
/>
) : (
todo.text
)}
</h4>
)}
</ListItemText>
<ListItemSecondaryAction>
<Checkbox
value={todo.id}
onChange={(e) => dispatch(todoCompleted(+e.target.value))}
defaultChecked={todo.done}
/>
<button
variant="contained" color="primary" edge='end'
onClick={() => handleUpdate()}
disabled={todo.done}
>
{edit ? 'Update' : 'Edit'}
</button>
<button
variant="contained" color="primary"
onClick={() => dispatch(todoDeleted(todo.id))}
>
Delete
</button>
</ListItemSecondaryAction>
</ListItem>
</List>
</div>
);
}
我想要第一项作为复选框,第二个待办事项文本和第三个按钮,请指导我
【问题讨论】:
-
请提供一个复制品,以便我们进行处理。
标签: javascript reactjs material-ui