我是ReactJS的新手。我正在尝试一起使用ReactJS和redux。
有人可以解释如何连接两者吗?
此外,在redux reducer中,我们通常将intialState设置为某个值。如何将React组件状态中已经存在的值设置为reducer的initialState?
下面是在我的减速器中完成的初始化,
const initialState = {
pricing:{
total:0
},
appliedPromo:false
}
以下是我在react组件中的状态
state = {
pricing: {},
itemDetails: {},
error: false,
seeDetails:false,
showPromoCode:false,
promocodeApplied:false,
user_discount:""
}
我将使用axios更新状态,
componentDidMount() {
axios
.get("https://purchsum-fb152.firebaseio.com/data.json")
.then(response => {
this.setState({ pricing: response.data.Pricing, itemDetails: response.data.itemDetails });
})
.catch(error => {
this.setState({ error: true });
});
}
然后我将状态连接到道具
const mapStateToProps = (state) => {
return{
total: state.pricing.total,
promoApplied: state.appliedPromo
}
}
const mapDispatchToProp = dispatch =>{
return{
onDiscount:()=>dispatch({type:"DISCOUNT",value:10,percentage:100})
}
}
export default connect(mapStateToProps,mapDispatchToProp)(PurchaseOrder);
仅当我将initialState设置如下时,该应用程序才能工作
const initialState = {
pricing:{
total:108.03
},
appliedPromo:false
}
我不想设置它(没有硬编码)。相反,我希望减速器采用状态值,该状态值在组件中已更新。
答案 0 :(得分:0)
我不想设置它(没有硬编码)。相反,我希望减速器服用 状态值,该值会在组件中更新。
不幸的是,这不是redux模式。您必须设置减速机的初始状态才能加载-我不建议这样做可以或应该动态完成。
但是,您不能创建一个动作来将组件安装到您想要的状态吗?