让 reactjs 呈现 textDecoration 时出现问题:'none'
Problem getting reactjs to render textDecoration: 'none'
我是 reactjs 的新手,我正在寻求有关在 reactjs 中为数组中的已完成项目创建直通功能 (textDecoration) 的帮助。所有项目都显示为已完成并显示划线,尽管它们尚未全部完成。我已经尝试查看许多不同的教程,但仍然无法让 textDecortion: 'none' 显示未完成的项目。我希望已完成的项目有一个直通线,将它们标记为已完成,而未完成的项目则没有直通线。但是,我得到的是一条贯穿所有项目的线,无论它们是否已完成。希望能帮助理解我哪里出错了。谢谢。
App.js:-
import React, { Component } from 'react';
import './App.css';
import Todos from './components/Todos';
class App extends Component {
state = {
todos: [
{
id: 1,
title: "put out the trash",
completed: "true"
},
{
id: 2,
title: "dinner with wife",
completed: "true"
},
{
id: 3,
title: "meeting with boss",
completed: "false"
}
]
};
render() {
return (
<div className="App">
<Todos todos = {this.state.todos}/>
</div>
);
}
}
export default App;
TodoItem.js:-
import React, { Component } from 'react'; import PropTypes from 'prop-types';
export class TodoItem extends Component {
getStyle = () => {
return {
background: "#f4f4f4",
padding: "10px",
borderBottom: "1px #ccc dotted",
textDecoration: this.props.todo.completed ? "line-through" : "none",
};
};
render() {
return (
<div style={this.getStyle()}>
<p>{ this.props.todo.title }</p>
</div>
)
} }
TodoItem.propTypes = { todo: PropTypes.object.isRequired }
export default TodoItem
你犯了一个小错误,将 completed
设置为字符串而不是布尔值
todos: [{
id: 1,
title: "put out the trash",
completed: "true" // this is string not boolean
},
.....
所以当我们进行比较时 this.props.todo.completed ? "line-through" : "none"
它总是会给出 true
如下所示将其更改为布尔值,它将起作用
todos: [{
id: 1,
title: "put out the trash",
completed: true
},
.....
我是 reactjs 的新手,我正在寻求有关在 reactjs 中为数组中的已完成项目创建直通功能 (textDecoration) 的帮助。所有项目都显示为已完成并显示划线,尽管它们尚未全部完成。我已经尝试查看许多不同的教程,但仍然无法让 textDecortion: 'none' 显示未完成的项目。我希望已完成的项目有一个直通线,将它们标记为已完成,而未完成的项目则没有直通线。但是,我得到的是一条贯穿所有项目的线,无论它们是否已完成。希望能帮助理解我哪里出错了。谢谢。
App.js:-
import React, { Component } from 'react';
import './App.css';
import Todos from './components/Todos';
class App extends Component {
state = {
todos: [
{
id: 1,
title: "put out the trash",
completed: "true"
},
{
id: 2,
title: "dinner with wife",
completed: "true"
},
{
id: 3,
title: "meeting with boss",
completed: "false"
}
]
};
render() {
return (
<div className="App">
<Todos todos = {this.state.todos}/>
</div>
);
}
}
export default App;
TodoItem.js:-
import React, { Component } from 'react'; import PropTypes from 'prop-types';
export class TodoItem extends Component {
getStyle = () => {
return {
background: "#f4f4f4",
padding: "10px",
borderBottom: "1px #ccc dotted",
textDecoration: this.props.todo.completed ? "line-through" : "none",
};
};
render() {
return (
<div style={this.getStyle()}>
<p>{ this.props.todo.title }</p>
</div>
)
} }
TodoItem.propTypes = { todo: PropTypes.object.isRequired }
export default TodoItem
你犯了一个小错误,将 completed
设置为字符串而不是布尔值
todos: [{
id: 1,
title: "put out the trash",
completed: "true" // this is string not boolean
},
.....
所以当我们进行比较时 this.props.todo.completed ? "line-through" : "none"
它总是会给出 true
如下所示将其更改为布尔值,它将起作用
todos: [{
id: 1,
title: "put out the trash",
completed: true
},
.....