javascript - 我收到错误 : React. Children.only 希望在我的 index.js 页面中收到单个 React 元素子元素。有解决方法吗

标签 javascript reactjs

此处为 Index.js 代码


    ReactDOM.render(
      <React.StrictMode>
        <App />
      </React.StrictMode>,
    document.getElementById('root')
    );

我猜测错误不是来自上面的代码,也不是来自 App.js 代码。 App.js 代码在这里

        function App() {
          return (
            <div className="App">
              <header className="App-header">
                <AppNavbar/>
                <ShoppingList/>
              </header>
            </div>
          );
       }

以下是 ShoppingList.js 的摘录。希望这有帮助: 我认为这就是问题的根源,因为我更改了 items.map this.state.items.map 并且错误是,items.map 未定义.

    class ShoppingList extends Component {
        state = {
            items: [
                { id: uuid(), name: 'Eggs'},
                { id: uuid(), name: 'Milk'},
                { id: uuid(), name: 'Apples'},
                { id: uuid(), name: 'Water'},
            ]
        }

    render() {
        const items= this.state;
        return(
            <container>
                <Button
                color="dark"
                style={{marginBottom : '2rem'}}
                onClick={() => {
                    const name = prompt("Enter item");
                    if (name) {
                        this.setState( state => ({
                            items: [...state.items, {id: uuid(), name}]
                        }));

                    }
                }}

                >Add Item</Button>

                <ListGroup>
                    <TransitionGroup className="shopping-list">
                    {this.state.items.map(({ id, name}) => (
                        <CSSTransition key="{id}" timeout="500" classNames="fade">

                        </CSSTransition>
                    ))}
                    </TransitionGroup>
                </ListGroup>

               </container>
        )
      }

    }

我检查了许多与此类似的其他错误,但没有成功。有人有解决办法吗?

最佳答案

  • 首先,根据react-transition-group documentation ,你需要把你需要转换的东西放在 <CSSTransition> 里面。所以在你的情况下,输入你的 ListGroup.ItemButton里面CSSTransition .
  • 另外,你用错了key (字符串)在 <CSSTransition key="{id}" 。所以使用提供唯一的 key - 像这样 - <CSSTransition key={id}

代码的工作副本在这里:

https://codesandbox.io/s/wild-snow-gwilb?file=/src/ShoppingList.js

关于javascript - 我收到错误 : React. Children.only 希望在我的 index.js 页面中收到单个 React 元素子元素。有解决方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61300324/

相关文章:

javascript - 如何测试 vue.js v-select 组件的值

javascript - 如何遍历字符串并检查是否有不匹配的字母

html - 检查值是否为负数并在 React JS 中应用 CSS

javascript - 调用带参数的 Action

javascript - 如何取反 Array.protype.filter 函数

javascript - 在angular js中向对象添加数组属性

javascript - webpack 错误配置。模块具有未知属性 'loaders'

javascript - 在react-navigation中,如何防止AppBar固定在顶部?我希望它在我滚动时消失

node.js - NPM install --global 命令代理问题

javascript - 在 Vue.js 中,组件可以检测插槽内容何时更改