我正在做一个简单的列表制造者,使用create来做列表应用程序,而且我很难弄清楚这个功能。我用这个应用程序想要做的是:
到目前为止,我的代码被分解为以下组件:
App,ListInput,ItemList,项目
应用程序的代码是
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”的错误没有定义,我很困惑为什么。
发布于 2018-09-30 19:36:00
在您的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;试着做上面的修改,这会有效的
如果有错误,请原谅,因为我正在用手机接听。
发布于 2018-09-30 19:34:03
你的ItemList不正确。查看下面更正的代码段,您需要映射项而不是项(因此错误项没有定义)。此外,您还需要在您的ItemList中将项作为app.js的支柱。
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}/>发布于 2018-09-30 19:36:19
似乎您在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} />https://stackoverflow.com/questions/52581402
复制相似问题