【发布时间】:2021-07-19 17:43:41
【问题描述】:
我目前正在开发一个社交应用程序。我已经尝试了很多不同的方法来传递 params(screamId) ,但由于某种原因它似乎仍然是未定义的。任何帮助表示赞赏...代码如下
主页显示所有尖叫声都已创建。
通过调用 getScreamsAction 函数上的动作来获取所有尖叫声。
在 Scream 组件上,用它的screamId 一张一张地显示尖叫卡。
Home.js
const Home = ({ getScreamsAction, data: { screams, loading } }) => {
useEffect(() => {
getScreamsAction();
}, [getScreamsAction]);
const scream = screams.map((scream) => (
<Scream key={scream.screamId} screams={scream} />
));
const recentScream = !loading ? scream : <ScreamSkeleton />;
return (
<Grid container spacing={16}>
<Grid item sm={8} xs={12}>
{recentScream}
</Grid>
<Grid item sm={4} xs={12}>
<Profile />
</Grid>
</Grid>
);
};
Home.propTypes = {
getScreamsAction: PropTypes.func.isRequired,
data: PropTypes.object.isRequired,
};
const mapStateToProps = (state) => ({
data: state.data,
});
const mapDispatchToProps = { getScreamsAction };
export default connect(mapStateToProps, mapDispatchToProps)(Home);
动作还原
在 SET_SCREAMS 上获取派发动作的尖叫数据
const getScreamsAction = () => (dispatch) => {
dispatch({ type: LOADING_DATA });
axios
.get("/screams")
.then((res) => {
dispatch({
type: SET_SCREAMS,
payload: res.data,
});
})
.catch((err) => {
dispatch({
type: SET_SCREAMS,
payload: [],
});
});
};
redux 上的减速器
const dataReducers = (state = initialState, action) => {
switch (action.type) {
case LOADING_DATA:
return {
...state,
loading: true,
};
case SET_SCREAMS:
return {
...state,
screams: action.payload,
loading: false,
};
default:
return state;
};
}
我发现这种方法的困难:
我什么都试过了。任何帮助将不胜感激!
【问题讨论】:
标签: javascript firebase react-redux