每当用户单击<Button/>
时,它将在数据库中存储为FIRST_PERSON_CHOSEN
代替somebody
(根据reducer.js
文件)。
我想使用initialState
文件中的reducer.js
,因为到目前为止,它甚至可能根本不在,它什么也没做。
在Main.js
内部,保存personPlacedInFirebase()
的{{1}}函数正在触发() => this.firstPersonChosen()
而不是FIRST_PERSON_CHOSEN
。
我如何做到这一点?如果需要其他信息,请告诉我,我将其发布。
这是我的somebody
文件:
Main.js
这是我的import React, { Component } from 'react';
import { connect } from 'react-redux';
import Modal from 'react-modal';
import Aux from '../../../../hoc/Aux';
import Button from '../Buttons/Button';
import CheckoutButton from '../../../../components/UI/buttons/CheckoutButton/CheckoutButton';
import { FIRST_PERSON_CHOSEN } from "../../../../store/action/PersonChosenAction";
import { CLOSE_MODAL, OPEN_MODAL } from "../../../../store/action/NoNameAction";
class Main extends Component {
componentWillMount() {
Modal.setAppElement('body');
}
personPlacedInFirebase() {
axios.post('./chosen.json', this.props.firstPersonChosen())
.then(response => {
console.log("person placed check firebase");
}).catch(error => {
console.log(error);
})
}
render() {
return (
<Aux>
<Button clicked={() => this.personPlacedInFirebase()} label={"This button"}/>
<CheckoutButton clicked={() => this.props.openModalRedux()}/>
<Modal isOpen={this.props.isOpen}>
<p>{this.props.thisButtonChosen}</p>
<button onClick={() => this.props.closeModalRedux()}>Close</button>
</Modal>
</Aux>
);
}
}
const mapStateToProps = state => {
return {
isOpen: state.global.isModalOpen,
clicked: state.personChosen.differentPeople
}
};
const mapDispatchToProps = dispatch => {
return {
firstPersonChosen: () => dispatch({type: FIRST_PERSON_CHOSEN}),
// Modal handlers
openModalRedux: () => dispatch({type: OPEN_MODAL}),
closeModalRedux: () => dispatch({type: CLOSE_MODAL})
}
};
文件:
reducer.js
答案 0 :(得分:0)
如果您在这一行中注意到
axios.post('./chosen.json', this.props.firstPersonChosen())
第二个参数,即调度动作的调用
this.props.firstPersonChosen()
不会返回您的对象,它只会将操作分派给reducer。
所以在
let name = 'somebody';
axios.post('...url',{name})
您应该显式传递要保存在数据库中的值,并在成功后将操作分派给reducer。如果要更新应用程序状态,也可以传递名称。
.then(response => this.props.firstPersonChosen(name))
如果将名称param传递给firstPersonChosen,请在mapDispatchToProps中更新其定义,这样它将接受名称作为param并可以进一步传递给reducer。
注意:您也可以像存储常量一样将缩写保存在公共文件中。这样初始状态就可以重用。