【发布时间】:2021-06-11 15:28:47
【问题描述】:
我是 React 新手,面临更新功能组件状态的问题。
我有一个组件TinderCards.js,如下所示,它基本上从上下文提供程序中获取对象列表,并为每个对象创建一个TinderCard (https://www.npmjs.com/package/react-tinder-card),它应该在何时更新count刷卡(onSwipe)。
但是,每次刷卡时,count 会增加到 1,然后不再继续。
例如
初始计数值:0
刷第一张卡 => count = 1
刷第二张卡 => count = 1(应该是2)
刷第三张卡 => count = 1(应该是 3)
我尝试将 count 值作为组件状态的一部分和称为 ResultsContext.js 的全局上下文的一部分,但两者都会导致相同的行为。
注意,test-btn 类的按钮在 onClick 处的行为完全符合我的要求。但是,TinderCard 组件的 onSwipe 却没有,尽管它基本上是相同的代码,这让我抓狂。
TinderCards.js
import React, { useState, useEffect, useContext } from "react";
import TinderCard from "react-tinder-card";
import StocksContext from "./StocksContext";
import ResultsContext from "./ResultsContext";
import "./Tindercards.css";
function TinderCards(props) {
// const [count, setCount] = useState(0);
const { count, setCount } = useContext(ResultsContext);
const { stocks, setStocks } = useContext(StocksContext);
return (
<div>
<div className="tinderCards__cardContainer">
<div>
Count: {count}
<button className="test-btn" onClick={() => setCount(count + 1)}>Increment</button>
</div>
<div className="main__container">
{stocks.map((stock) => (
<TinderCard
onSwipe={() => setCount(count + 1)}
className="swipe"
key={stock.name}
preventSwipe={["up", "down"]}
>
<div className="card">
<div style={{ height: "100%" }}>
<img
src={stock.url}
style={{
objectFit: "contain",
height: "100%",
width: "100%",
backgroundColor: "white",
}}
/>
</div>
</div>
<h3 style={{ backgroundColor: "white" }}>${stock.name}</h3>
</TinderCard>
))}
</div>
</div>
</div>
);
}
export default TinderCards;
感谢您的帮助!非常感谢!
【问题讨论】:
-
嗨,请阅读github.com/3DJakob/react-tinder-card/issues/21。似乎与您上面的问题有关
标签: javascript reactjs react-hooks react-context react-functional-component