开发者问题收集

React:未捕获(在承诺中)TypeError:无法读取未定义的属性(读取“setState”)

2022-04-12
257

我收到此错误:

实际上,我试图在单击按钮时更改按钮文本几秒钟。

这基本上是针对 添加到购物车 按钮的,我想在同一函数中为我的 API 调用保留按钮过程几秒钟。

我的代码:

const AddToCart = async (sku) => {
    this.setState({ buttonText: "Loading..." });
    setTimeout(() => {
        this.setState({ buttonText: "Saved" });
    }, 5000);
  }

  const [value, setvalue] = useState([]);
  const initialState = "ADD TO CART";
  const [buttonText, setButtonText] = useState("ADD TO CART");



 render() {
    return (
        <a onClick={()=>{AddToCart(item.sku)}} className="add-to-cart-btn">
        <i className="fa fa-solid fa-cart-shopping"></i>{buttonText}</a>
    );
 }

My Final code is what I am trying to do.

    const AddToCart = async (sku) => {
    this.setState({ buttonText: "Loading..." });

    const user_id = localStorage.getItem('card_id');
    let product_details = {
      sku_name: sku,
      qty: 1,
      quote_id: user_id
    }

    setTimeout(() => {
        this.setState({ buttonText: "Saved" });
    }, 5000);

    dispatch(useraction.addtocartRequest(product_details));
  }

我是这项技术的新手。任何其他建议也对我有很大帮助。 非常感谢您的考虑!:-)

2个回答

这里您使用的是 this.setState ,它用于基于类的组件,但您使用的是基于功能的组件,因此不要使用 this.setState ,而只需编写 setButtonText('Loading...')

https://reactjs.org/docs/hooks-intro.html

smith chokshi
2022-04-12

您应该使用 react hooks 而不是 this.setState ,操作方法如下:

const [buttonText, setButtonText] = useState("ADD TO CART");
  // buttonText is value getter
  // setButtonText is value setter

因此,如果您想更新状态的值:

setButtonText(newValue)
adel
2022-04-12