render
更新待办事项中的对象的最佳方法是什么?我尝试通过它进行映射,但是它没有返回任何错误。
码:
import React from 'react';
const Todo = React.createClass({
getInitialState() {
return ({todos: []})
},
newTodo(e) {
let today = new Date();
if (e.key === 'Enter') {
console.log(this.state.todos)
this.setState({
todos: this.state.todos.concat({title: e.target.value, date: today})
})
}
},
delTodo(e) {},
render() {
return (
<div className="panel panel-default">
<div className="panel-heading">Todo List Creator</div>
<div className="panel-body">
<input type="text" placeholder="enter todo name" className="form-control" onKeyPress={this.newTodo}/>
</div>
<ul className="list-group">
{this.state.todos.map((td, index) => {
<li key={index} className="list-group-item">
<strong>{td.name}</strong><br/>
{td.date}
</li>
})}
</ul>
</div>
);
}
});
export default Todo
您不会在map
体内返回任何内容,map
如果您不返回任何内容,则undefined
默认情况下它将返回。
用这个:
<ul className="list-group">
{this.state.todos.map((td, index) => {
return <li key={index} className="list-group-item">
<strong>{td.name}</strong>
<br/>
{td.date.toDateString()}
</li>
})
}
</ul>
或者,您也可以这样编写它,而无需使用{}
:
<ul className="list-group">
{this.state.todos.map((td, index) => (
<li key={index} className="list-group-item">
<strong>{td.name}</strong>
<br/>
{td.date.toDateString()}
</li>
))
}
</ul>
注意:
我们不能直接渲染任何object/array
内部jsx
,因为date是一个对象,因此您需要string
使用toDateString()
或任何其他date
方法将其转换为。
查看待办事项示例:
const Todo = React.createClass({
getInitialState() {
return ({todos: []})
},
newTodo(e) {
let today = new Date();
if (e.key === 'Enter') {
this.setState({
todos: this.state.todos.concat({title: e.target.value, date: today})
})
}
},
delTodo(index) {
let todos = this.state.todos.slice();
todos.splice(index, 1);
this.setState({todos})
},
render() {
return (
<div className="panel panel-default">
<div className="panel-heading">Todo List Creator</div>
<div className="panel-body">
<input type="text" placeholder="enter todo name" className="form-control" onKeyPress={this.newTodo}/>
</div>
<ul className="list-group">
{this.state.todos.map((td, index) => {
return <li key={index} className="list-group-item">
<strong>{td.title}</strong>
<button onClick={() => this.delTodo(index)}>delete</button>
<br/>
{td.date.toDateString()}
</li>
})
}
</ul>
</div>
);
}
});
ReactDOM.render(<Todo/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='app'/>
查看此代码段以了解map
:
let a = [1,2,3,4,5,6];
let b = a.map(el => {
if(el % 2)
return el;
});
console.log(b);
假设我有: 我如何使它最终具有SMTH1行量,每个行包含SMTH2列量?
我正在使用D3JS库来显示地图。加载美国各州地图可以正常工作,但如果我尝试加载单个州的县地图,则无法正常工作。我在所有州使用的文件位于https://raw.githubusercontent.com/d3/d3.github.com/master/us-10m.v1.json.我当前使用的状态映射是https://raw.githubusercontent.com/deldersveld/top
问题内容: 我正在使用Reactjs,编写一个菜单组件。 每当我在map函数内部使用“ this”时,它都是未定义的,但在外部,则没有问题。 错误: “无法读取未定义的属性’props’” 有人帮我!:(( 问题答案: 需要第二个参数来设置在映射函数中引用的内容,因此将其作为第二个参数传递以保留当前上下文: 另外,您可以使用ES6 箭头功能自动保留当前上下文:
错误:
我使用Queue发送电子邮件,代码如下: 在控制器部分,我使用send- 我正在使用视图: 现在,当我尝试发送时,收到的电子邮件中没有任何内容。 我已经调试了整个供应商\laravel\framework\src\illighted\Mail\Mailer。php类并发现renderView函数中无法呈现视图。 我还将视图Doctype更改为HTML5,但得到了相同的结果,没有内容。 渲染视图正在
这是用reactjs呈现原始html的唯一方法吗? 我知道有一些很酷的方法用JSX标记东西,但我主要感兴趣的是能够渲染原始的html(所有的类,内联样式等)。像这样复杂的东西: 我不想在JSX中重写所有这些。 也许我对这一切的想法都错了。请纠正我。