javascript - 如何在反应应用程序中为任务设置条件?
问题描述
我想在复选框表单中添加一个重要条件。当用户添加一些任务并选中小复选框(这是重要任务的指示!)应在应用程序中以粗体显示。请问如何定义这样的条件?
function Form(props){
const [name, setName ] = useState('');
const [important, setImportant] = useState(false);
function handleChangeImportant(e){
console.log(e);
e.preventDefault();
setImportant(e.target.checked);
if(important ){
alert('this task is important');
setName("");
}
};
function handleChange(e) {
setName(e.target.value);
}
function handleSubmit(e){
e.preventDefault();
//alert('Moin');
if(name == ''){
alert('Please enter a valid task name');
}
if(name !== ''){
props.addTask(name);
setName("");
}
}
return(
<form onSubmit={handleSubmit}>
<h2 className="label-wrapper">
<label htmlFor="new-todo-input" className="label__lg">
What needs to be done?
</label>
</h2>
<input
type="text"
id="new-todo-input"
className="input input__lg"
name="text"
autoComplete="off"
value={name}
onChange={handleChange}
/>
<input
type="checkbox"
id="todo-0"
value={important}
onChange={handleChangeImportant}
/> Important
<button type = "submit" className="btn btn__primary btn__lg">
Add
</button>
</form>
);
}
export default Form;
我渲染任务列表如下
在应用程序中,任务列表呈现如下。
const taskList = tasks.filter(FILTER_MAP[filter]).map(task => (
<ToDo
id ={task.id}
name={task.name}
completed={task.completed}
key ={task.id}
toggleTaskCompleted={toggleTaskCompleted}
deleteTask={deleteTask}
editTask={editTask}
/>
)
);
解决方案
在您的Todo
组件中添加另一个道具作为important
,基于该设置任务标题的样式/类别粗体。
<ToDo
...
important={task.important}
...
/>
然后在显示任务名称的组件中:
<p style={{ fontWeight: props.important ? 'bold' : 'normal' }}>{props.name}</p>
推荐阅读
- .htaccess - 重写规则仅适用于 R 标志
- sql - 为什么只有 6 行的表需要大约 20 秒才能在 Oracle 中返回结果
- python - 通过比较列值将数据框列值附加到数组
- prestashop - 如何解决 prestashop 1.7 上的缓慢错误?
- asp.net-core - Asp.net 核心中的启动文件更改
- bash - 提供文件而不更改脚本中的名称
- c# - 如何强制重定向绑定到我的可用版本?
- json - 如何对推特数据进行分页以显示 100 条或更多最新推文?
- node.js - nodejs获取promise对象值
- gitlab - Gitlab CI/CD 连接到私有服务器