【发布时间】:2016-05-08 20:43:32
【问题描述】:
我遇到了条件渲染问题。 这是我 100% 的工作视图:
function todoItem(todo) {
return li('.list-item',[
todo.editing ? input('.todo-edit', {type: 'text', value: todo.text, autofocus: true, attributes: { 'data-id': todo.id }}) : '',
!todo.editing ? span(`.todo ${todo.completed ? '.completed' : ''}`, { attributes: { 'data-id': todo.id }}, todo.text) : '',
button('.remove-todo', {type: 'button', value: todo.id}, 'remove'),
todo.completed ? button('.unmark-todo', {type: 'button', value: todo.id}, 'unmark') : '',
!todo.completed ? button('.mark-todo', {type: 'button', value: todo.id}, 'mark as done') : ''
]);
const view = (state$) => {
return state$.map(todos =>
div([
input('.todo-input', {type: 'text', placeholder: 'Todo', value: ''}),
ul(todos.items.map(todo => todoItem(todo))),
footer(todos)
])
);
};
问题是当我尝试将条件按钮更改为 if-else 而不是两个单独的条件时:
todo.completed ?
button('.unmark-todo', {type: 'button', value: todo.id}, 'unmark') :
button('.mark-todo', {type: 'button', value: todo.id}, 'mark as done')
它似乎将按钮切换为“取消标记”,然后再次切换回“标记”(我已经通过控制台日志确认了这一点)。我的意图映射到这两个类 .mark 和 .unmark,所以我认为这不是问题...
这是一个实际错误还是我遗漏了什么?
【问题讨论】:
-
创建一个填充或webpackbin.com
-
大概就是这个bug:github.com/cyclejs/core/issues/228
标签: javascript cyclejs