首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法正确地将用户输入添加到状态,当出现map函数错误时

我无法正确地将用户输入添加到状态,当出现map函数错误时
EN

Stack Overflow用户
提问于 2019-09-20 22:02:31
回答 1查看 23关注 0票数 1

我有一个简单的列表,它存储在App组件中。这是用来显示所有的人,我希望能够添加新的人到这个名单。我无法将输入添加到我的状态中,我收到一个错误,即map不是一个函数。我没有正确地创建数组吗?

代码语言:javascript
复制
const App = () => {
  const [persons, setPersons] = useState([
    {
      name: 'Artos Hellas',
      id: 1
    }
  ]);
  const [newName, setNewName] = useState('');

  const handleNewName = event => {
    setNewName(event.target.value);
  };
  const addName = event => {
    event.preventDefault();
    const personObject = {
      name: newName,
      id: persons.length + 1
    };
    setPersons(persons.concat(personObject));
    setPersons('');
  };

  const rows = () => persons.map(p => <li key={p.key}>{p.name}</li>);

  return (
    <div>
      <h2>Phonebook</h2>
      <form onSubmit={addName}>
        <div>
          name : <input value={newName} onChange={handleNewName} />
        </div>
        <div>
          <button type="submit">add</button>
        </div>
      </form>
      <h2>Numbers</h2>
      <ul>{rows()}</ul>
    </div>
  );
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-20 22:08:29

删除setPersons('');语句,您可能希望使用setNewName('')

代码语言:javascript
复制
const addName = event => {
  event.preventDefault();
  const personObject = {
    name: newName,
    id: persons.length + 1
  };
  setPersons(persons.concat(personObject));
  // setPersons('');
  setNewName('');
};

此外,您在呈现列表元素时获得了错误的key属性:

代码语言:javascript
复制
//                                            v Not p.key
const rows = () => persons.map(p => <li key={p.id}>{p.name}</li>);

此外,当你使用一个名为row的函数并将其命名为row()时,这会让人感到困惑,你可以尝试将其命名为像renderRows这样的操作,或者只使用ReactElement数组:

代码语言:javascript
复制
const renderRows = () => persons.map(p => <li key={p.id}>{p.name}</li>);
<ul>{renderRows()}</ul>

// Or
const rows = persons.map(p => <li key={p.id}>{p.name}</li>);
<ul>{rows}</ul>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58029899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档