如何连接react和redux?

时间:2019-03-20 22:10:45

标签: javascript reactjs redux

我是ReactJS的新手。我正在尝试一起使用ReactJS和redux。

  1. 有人可以解释如何连接两者吗?

  2. 此外,在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 
}

我不想设置它(没有硬编码)。相反,我希望减速器采用状态值,该状态值在组件中已更新。

1 个答案:

答案 0 :(得分:0)

  

我不想设置它(没有硬编码)。相反,我希望减速器服用   状态值,该值会在组件中更新。

不幸的是,这不是redux模式。您必须设置减速机的初始状态才能加载-我不建议这样做可以或应该动态完成。

但是,您不能创建一个动作来将组件安装到您想要的状态吗?