首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:对象状态中的变量不可迭代

TypeError:对象状态中的变量不可迭代
EN

Stack Overflow用户
提问于 2020-07-16 14:04:59
回答 1查看 686关注 0票数 1

我对react.js非常陌生,我有一个关于我的程序的问题。当单击相应的按钮时,当我试图调用方法时,我会得到一个类型错误。基本上,该方法生成一个随机数,我希望在另一个组件中显示这个数字。为此,我必须在位于对象状态的变量'defNum‘中写入返回。我希望你能帮我:)

我在context.js中的代码

代码语言:javascript
复制
  defaultNumber = () => {
    let defNumChange = [...this.state.defNum];
    defNumChange = Math.random().toString(8).substr(2);
    defNumChange = parseInt(defNumChange);
    console.log(defNumChange);
    this.setState(() => {
  return {
    defNum: defNumChange,
  };
});

这是我的状态对象,也位于context.js:中。

代码语言:javascript
复制
  state = {
    products: [],
    detailProduct: detailProduct,
    cart: [],
    modalOpen: false,
    modalProduct: detailProduct,
    subTotal: 0,
    delivery: 0,
    totalSum: 0,
    defNum: 0,
  };

这是组件,在这里我要显示方法的返回值:

代码语言:javascript
复制
import React, { Component } from "react";
import { ProductConsumer } from "../context";

export default class thankYou extends Component {
render() {
return (
  <ProductConsumer>
    {(value) => {
      const { defNum } = value;
      return (

        <React-Fragement>
          <div className="container">
            <div className="row mt-2 mb-2">
              <div className="col-md-12">
                <div className="jubotron text-center text-titel">

                  <p></p>
                  <h4>Vielen Dank für deine Bestellung!</h4>
                  <hr />
                  <p className="mt-6">
                    Wenn dir unsere Produkte gefallen komme gerne wieder auf
                    uns zurück
                  </p>

                  <p className="mt-6">
                    <strong>
                      Dein .Dog.Styles. Team freut sich auf dich
                    </strong>
                  </p>
                  <p className="mt-6">
                    Bitte überprüfe deine E-Mails, um weitere Details zu
                    erhalten.
                  </p>
                  <hr />
                  <p></p>

                  <p className="mt-6">
                    <strong>Deine Bestellnummer: {defNum} </strong>      <------ THIS ONE :)
                  </p>
                </div>
              </div>
            </div>
          </div>
        </React-Fragement>
      );
    }}
  </ProductConsumer>
);}}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 14:07:55

根据您的defnum (0),您的state(0)是整数,它的非iterable.It应该是一个arraySetobject或字符串,以便可迭代。

代码语言:javascript
复制
let defNumChange = [...this.state.defNum]; // so this won't work 

扩展语法(.)允许在需要零或多个参数(用于函数调用)或元素(用于数组文字)的地方展开可迭代的(例如数组表达式或字符串),或者在需要零或多个键值对(用于对象文本)的地方展开对象表达式。

这里博士

您可以做的是,将double quotes添加到defnum的值(仅是一个黑客)中,使其具有可迭代性。

代码语言:javascript
复制
 state = {
    products: [],
    detailProduct: detailProduct,
    cart: [],
    modalOpen: false,
    modalProduct: detailProduct,
    subTotal: 0,
    delivery: 0,
    totalSum: 0,
    defNum: "0", // as string is iterable this will work
  };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62936553

复制
相关文章

相似问题

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