如何在 React.JS 中创建一个简单的列表制作应用程序?
How to create a simple list maker app in React.JS?
我正在开发一个简单的列表制作器,使用 create-react-app 来制作列表应用程序,但我在弄清楚其功能时遇到了一些麻烦。我想用这个应用程序完成什么:
我希望能够在输入框内输入文本,按下按钮或按回车键,然后任何文本都会列在应用程序的正文中。
我希望能够创建一个按钮,在任务或 objective 完成后删除列表项
到目前为止,我的代码分为以下几个部分:
应用,
列表输入,
项目列表,
项目
应用代码是
import React, { Component } from 'react';
import './App.css';
import Navigation from './components/Navigation';
import ListInput from './components/ListInput';
import ListName from './components/ListName';
import Item from './components/Item';
import ItemList from './components/ItemList';
class App extends Component {
constructor() {
super();
this.state = {
input: '',
items: []
};
}
addItem = () => {
this.setState(state => {
let inputValue = this.input.current.value;
if (inputValue !== '') {
this.setState({
items: [this.state.items, inputValue]
})
}
})
}
onButtonEnter = () => {
this.addItem();
}
render() {
return (
<div className="App">
<Navigation />
<ListName />
<ListInput addItem={this.addItem}
onButtonEnter={this.onButtonEnter} />
<Item />
<ItemList />
</div>
);
}
}
export default App;
ListInput 的代码是:
import React from 'react';
import './ListInput.css';
const ListInput = ({ addItem, onButtonEnter }) => {
return (
<div>
<p className='center f2'>
{'Enter List Item'}
</p>
<div className='center'>
<div className='center f3 br-6 shadow-5 pa3 '>
<input type='text'
className='f4 pa2 w-70 center'
placeholder='Enter Here'
/>
<button className='w-30 grow f4 link ph3 pv2 dib white bg-black'
onClick={onButtonEnter}
onSubmit={addItem} >
{'Enter'}
</button>
</div>
</div>
</div>
);
}
export default ListInput;
商品代码为:
import React from 'react';
const Item = ({text}) =>{
return (
<div>
<ul>{text}</ul>
</div>
)}
export default Item;
ItemList 的代码是:
import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{item.map(items => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
在我的 React 应用程序中,我返回 'item' 未定义的错误,我很困惑为什么。
您的 ItemList 不正确。查看下面更正的代码段,您需要映射到项目而不是项目(因此未定义错误项目)。此外,您需要将项目作为 app.js
中 ItemList 的道具
import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{items.map(item => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
在 app.js 中添加以下行。另外,我没有看到你的 app.js 删除它有什么用。
<ItemList items={this.state.items}/>
在您的 App.js 中,您需要将项目作为道具传递给 ItemList 组件,例如
<ItemList items={this.state.items} />
另外,在 addItem 函数中,将 inputValue 推送到 items 数组是不正确的,请执行如下操作
addItem = () => {
this.setState(state => {
let inputValue = this.input.current.value;
if (inputValue !== '') {
this.setState(prevState => ({
items: [...prevState.items, inputValue]
}));
}
})
}
并且在 ItemList.js 执行 .map 之前进行条件检查,并且在 .map
中也有一些拼写错误
import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{items && items.map(item => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
尝试进行上述更改这会起作用
因为我是用手机回答的,所以如果有任何打字错误,请原谅
您似乎在 ItemList
中输入错误。
它接收 items
(复数)作为道具,但您使用的是 item
.
const ItemList = ({ items }) => {
return (
<div>
{items.map(items => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
并且不要忘记实际将 items
道具传递给 'ItemList':
<ItemList items={this.state.items} />
我正在开发一个简单的列表制作器,使用 create-react-app 来制作列表应用程序,但我在弄清楚其功能时遇到了一些麻烦。我想用这个应用程序完成什么:
我希望能够在输入框内输入文本,按下按钮或按回车键,然后任何文本都会列在应用程序的正文中。
我希望能够创建一个按钮,在任务或 objective 完成后删除列表项
到目前为止,我的代码分为以下几个部分:
应用, 列表输入, 项目列表, 项目
应用代码是
import React, { Component } from 'react';
import './App.css';
import Navigation from './components/Navigation';
import ListInput from './components/ListInput';
import ListName from './components/ListName';
import Item from './components/Item';
import ItemList from './components/ItemList';
class App extends Component {
constructor() {
super();
this.state = {
input: '',
items: []
};
}
addItem = () => {
this.setState(state => {
let inputValue = this.input.current.value;
if (inputValue !== '') {
this.setState({
items: [this.state.items, inputValue]
})
}
})
}
onButtonEnter = () => {
this.addItem();
}
render() {
return (
<div className="App">
<Navigation />
<ListName />
<ListInput addItem={this.addItem}
onButtonEnter={this.onButtonEnter} />
<Item />
<ItemList />
</div>
);
}
}
export default App;
ListInput 的代码是:
import React from 'react';
import './ListInput.css';
const ListInput = ({ addItem, onButtonEnter }) => {
return (
<div>
<p className='center f2'>
{'Enter List Item'}
</p>
<div className='center'>
<div className='center f3 br-6 shadow-5 pa3 '>
<input type='text'
className='f4 pa2 w-70 center'
placeholder='Enter Here'
/>
<button className='w-30 grow f4 link ph3 pv2 dib white bg-black'
onClick={onButtonEnter}
onSubmit={addItem} >
{'Enter'}
</button>
</div>
</div>
</div>
);
}
export default ListInput;
商品代码为:
import React from 'react';
const Item = ({text}) =>{
return (
<div>
<ul>{text}</ul>
</div>
)}
export default Item;
ItemList 的代码是:
import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{item.map(items => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
在我的 React 应用程序中,我返回 'item' 未定义的错误,我很困惑为什么。
您的 ItemList 不正确。查看下面更正的代码段,您需要映射到项目而不是项目(因此未定义错误项目)。此外,您需要将项目作为 app.js
中 ItemList 的道具import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{items.map(item => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
在 app.js 中添加以下行。另外,我没有看到你的 app.js 删除它有什么用。
<ItemList items={this.state.items}/>
在您的 App.js 中,您需要将项目作为道具传递给 ItemList 组件,例如
<ItemList items={this.state.items} />
另外,在 addItem 函数中,将 inputValue 推送到 items 数组是不正确的,请执行如下操作
addItem = () => {
this.setState(state => {
let inputValue = this.input.current.value;
if (inputValue !== '') {
this.setState(prevState => ({
items: [...prevState.items, inputValue]
}));
}
})
}
并且在 ItemList.js 执行 .map 之前进行条件检查,并且在 .map
中也有一些拼写错误 import React from 'react';
import Item from './Item';
const ItemList = ({ items }) => {
return (
<div>
{items && items.map(item => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
export default ItemList;
尝试进行上述更改这会起作用
因为我是用手机回答的,所以如果有任何打字错误,请原谅
您似乎在 ItemList
中输入错误。
它接收 items
(复数)作为道具,但您使用的是 item
.
const ItemList = ({ items }) => {
return (
<div>
{items.map(items => <Item key={item.id}
text={item.text} />
)}
</div>
)
}
并且不要忘记实际将 items
道具传递给 'ItemList':
<ItemList items={this.state.items} />