我想做一个卡鲁塔风格的纸牌匹配游戏。随机选择一张卡片并显示在页面顶部。所有其他卡片显示在下面。这些卡是从带有"id"(数字)、"前"(字符串)、"后"(字符串)
的JSON中提取的。
预期结果:
不过,我不知道如何比较这两者。如何从子组件获取信息以与父组件状态进行比较?我不确定如何使用handleComparison()函数在此处找到特定单击div的“x”。
//if(this.props.card[x]. id==this.props.current卡[0]. id){-
import React from "react"
import Header from "./Header"
import { cardData } from "../Cards";
class GameContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
cards: cardData,
score: 0,
currentCard: [{}],
}
}
componentDidMount = (e) => {
const random = Math.floor(Math.random() * cardData.length);
this.setState({
currentCard: [cardData[random]]
})
}
handleComparison = (e) => {
//if (this.props.card[x].id == this.props.currentCard[0].id) -> {score++ - > gen new card}
console.log('success');
}
render() {
return (
<div className="wrapper">
<Header score={this.state.score} />
<div className="currentCard" >
<p>{this.state.currentCard[0].front}</p>
</div>
<CardContainer cards={this.state.cards} handleComp={this.handleComparison}/>
</div>
)
}
}
class CardContainer extends React.Component {
render() {
return (
<div id="CardContainer" className="cardContainer">
{this.props.cards.map((cards, index) => (
<div id="card" className="card" onClick={this.props.handleComp}>
<p key={index}>{cards.back}</p>
</div>
))}
</div>);
}
}
export default GameContainer
你已经接近解决方案了。所有你需要的是传递道具从孩子到父onClark
的卡
重写的代码将被删除
js prettyprint-override">class CardContainer extends React.Component {
render() {
return (
<div id="CardContainer" className="cardContainer">
{this.props.cards.map((card, index) => (
<div id="card" className="card" onClick={() => this.props.handleComp(card)}>
<p key={index}>{card.back}</p>
</div>
))}
</div>);
}
}
然后在handleComp
方法中将其保存到状态
class GameContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
cards: cardData,
score: 0,
currentCard: [{}],
}
}
// ====
handleComparison = (card) => {
//if (card.id == this.state.currentCard[0].id) -> {score++ - > gen new card}
console.log('success');
}
// ====
}
可以从子组件传递值。
<CardContainer cards={this.state.cards} handleComp={() => this.handleComparison(whatever_value_you_want_here)}/>
然后在父母中
handleComparison = (whatever_value_you_want_here) => {
//if (this.props.card[x].id == this.props.currentCard[0].id) -> {score++ - > gen new card}
console.log('success', whatever_value_you_want_here);
}
我想用in参数制作一个过程。更具体地说,我有如下表1 对于相同的COL1和col2/col3,请检查从col4中选择不同的值,例如COL1=600、col2=140/col3=2和col2=140/col3=3返回20和35 并在表1中插入第600、140、3、20、1200、7行(序号)600、140、3、35、1700、8行(序号) 但我不知道如何执行insert语句:( 你能帮我做吗?非常感
我最近使用钩子编写了一个表组件,每次页面加载时都会有一个对后端的API调用,因此同时会显示一个加载微调器,直到有来自API的响应为止。我使用redux作为状态管理,所以当有来自API的响应时,将调度一个操作并更新状态。所以这里的问题是,通常在类组件中,我们可以使用 但是我不知道如何使用钩子实现同样的效果。我还提到了这个stackoverflow问题如何比较反应挂钩的旧值和新值使用效果? 但这个解决
问题内容: 我是Java的新手,我一直在尝试实现一种用于查找三次方程式根的算法。当我计算判别式并尝试检查其相对于零的位置时,就会出现问题。 如果运行它并输入数字“ 1 -5 8 -4”,则输出如下: 我知道问题是因为双精度计算不精确。通常,判别式应为0,但最终变为0.00000000000000001236。 我的问题是,避免这种情况的最佳方法是什么?我是否应该检查数字是否介于零附近的ε之间?还是
我有两个基于同一ecore模型的EMF实例版本。我需要以以下格式准备一个从v1到v2更改的事物列表
问题内容: 这是我的app.js文件-我有一个父状态和两个子状态。两个子视图都需要该对象。 我想使用此已解析的obj来决定子模板 我怎样才能做到这一点? 问题答案: 有一个可行的例子。而不是我们应该使用。这是新的状态def: 我们为什么要使用这种方法?如此处记录: 范本 TemplateUrl … 也可以是返回url的函数。 它采用一个预设参数,该参数不会被注入。 TemplateProvider
问题内容: 假设我的父组件有两个子组件: 我从Child2获得输入,并将其传递给Parent组件(直到现在,我知道该怎么做)。但是然后我需要将该输入传递给Child1以更新其状态。 我怎样才能做到这一点? 问题答案: 希望您能得到主要想法-在Parent组件中创建一个函数,该函数将更改传递给Child1的值。ReactJS:为什么将组件的初始状态传递为prop是反模式?