【发布时间】:2020-11-16 05:06:22
【问题描述】:
我是 React 和 Redux 的超级新手,但是如何同时使用本地属性和 redux 属性?我一直在尝试不同的方法,但它们似乎都不适用于我的情况,这很简单,我相信有一个简单的解决方案,在我没有经验的情况下我看不到。
我正在尝试做的事情:使用redux来管理角色状态,但同时使用本地组件来管理模态(打开和关闭它) 我想了解如何在此类代码中使用本地状态,或者如何更改它以使 isOpen 属性在本地级别可管理。
import * as React from "react";
import { Component, useState } from "react";
import { Character } from "../../../../Data/Character";
import StatusBar from "../../../Components/StatusBar";
import Button from "react-bootstrap/Button";
import Modal from "react-bootstrap/Modal";
import HealthCalculator from "./HealthCalculator";
import { connect } from "react-redux";
import { UpdateCurrentHealth } from "../../../../redux/actionCreators";
const mapStateToProps = (state: {
currentHealth: any,
maxHealth: any,
classes: any[],
}) => {
return {
currentHealth: state.currentHealth,
maxHealth: state.maxHealth,
classes: state.classes,
isOpen: false,
};
};
const mapDispatchToProps = (dispatch) => ({
updateCurrentHealth: (payload) => dispatch(UpdateCurrentHealth(payload)),
toggleModal: () => ({}),
});
/....../
const HealthCard = (props: {
currentHealth: number,
maxHealth: number,
classes: any[],
isOpen: any,
}) => (
<>
<div className="card" style={{ textAlign: "center" }}>
<span style={{ fontSize: "20px", color: "#708F93" }}>Hit Points</span>
<div className="HealthBar">
<StatusBar
bColor="#9DBE9E"
fColor="#BAE6BC"
value={(props.currentHealth / props.maxHealth) * 100}
label={GetLabelHealth(props.currentHealth, props.maxHealth)}
/>
</div>
{props.classes.length >= 0 &&
props.classes.map((c) => (
<div style={{ marginTop: "2px" }}>
<div className="HitPointsBar">
<StatusBar
bColor="#c5d2db"
fColor="#D8E2E9"
value={(c.currentHDie / c.classLevel) * 100}
label={GetLabelHitDice(c.currentHDie, c.hitDie)}
/>
</div>
</div>
))}
</div>
<Modal
show={props.isOpen}
size="sm"
aria-labelledby="contained-modal-title-vcenter"
centered
>
<Modal.Body bsPrefix="modalContentCard">
<HealthCalculator />
</Modal.Body>
</Modal>
</>
);
export default connect(mapStateToProps, mapDispatchToProps)(HealthCard);
【问题讨论】:
标签: javascript reactjs redux