我正在尝试使用Redux从Firebase DB显示数据,但是由于某些原因,this.props是未定义的 我使用redux可以毫无问题地在数据库的其他页面中显示其他数据。但是在这里我卡住了,找不到错误
这是我的代码。希望有人能给我建议这里有什么问题
在我的invoice.js文件中:
const mapStateToProps = (state) => {
return {
startFireData: state.startFireData,
};
}
const mapDispatchToProps = (dispatch) => {
return {
watchInvoiceStartFire: () => { dispatch(watchInvoiceStartFire()) },
};
}
constructor(props) {
super(props);
this.props.watchInvoiceStartFire();
}
和渲染中:
return (
<View style={styles.container}>
<LinearGradient
colors={['#3399ff', '#66b3ff', '#cccccc']}
style={styles.pageStyle}>
<Text style={styles.buttonText} >{this.props.startFireData.נפיץ}</Text>
<Text style={styles.buttonText} >{this.props.startFireData.עשן_חדש}</Text>
<Text style={styles.buttonText} >{this.props.startFireData.עשן_ישן}</Text>
<Text style={styles.buttonText} >דוחות</Text>
<Text style={styles.buttonText} >דוחות</Text>
</LinearGradient>
</View>
在我的redux文件中:
const watchInvoiceStartFire = () =>{
return function(dispatch) {
firebase.database().ref("Invoices/startfire/ammo").on("value", function(snapshot) {
var startFireData = snapshot.val();
dispatch(setStartFireData(startFireData));
}, function(error) { });
};
}
const setStartFireData = (startFireData) =>{
return {
type: "setStartFireData",
value: startFireData
}
}
const reducer = (state = initialState, action) => {
switch(action.type) {
case "setStorageData":
return { ...state, storageData: action.value };
case "setOperationData":
return {...state, operationData: action.value};
case "setStartFireData":
return {...state, startFireData: action.value};
default:
return state;
}
};
我的错误,我忘记添加到初始状态
const initialState = {
personData: { },
storageData:{ },
operationData:{ },
startFireData:{ },
};
很抱歉在这里打扰你