【发布时间】:2022-01-11 12:31:45
【问题描述】:
我不知道为什么我的用户在我的 console.log 中未定义我可以在我的状态中看到它们,但我无法在页面上列出它们.. 它出现在我还没有使用 Redux 之前。使用 Redux 后,它不再显示用户。
我将向您展示一段代码应该在哪里显示以及如何显示 我的 UserManagement.js:
function UserManagement({ history }) {
const dispatch = useDispatch();
const userLogin = useSelector((state) => state.userLogin);
const userList = useSelector((state) => state.userList);
const { loading } = userLogin;
const { users} = userList;
useEffect(() => {
dispatch(getUsers());
},[dispatch, history]);
const deleteHandler = (id) => {
if (window.confirm("Are you sure? you want to delete")) {
dispatch(deleteUserAction(id));
}
};
console.log(userList);
console.log(users);
return (
<MainScreen title={`List of Users`}>
<Link to="/createUser" id="OpenCreateUserDialogButton">
<Button style={{ marginLeft: 10, marginBottom: 6 }} size="lg">
Create new User
</Button>
</Link>
{loading && <Loading />}
{users &&
users?.map((users) => (
<Accordion>
<Card style={{ margin: 10 }} key={users._id}>
<Card.Header style={{ display: "flex" }}>
<span
// onClick={() => ModelShow(note)}
style={{
color: "black",
textDecoration: "none",
flex: 1,
cursor: "pointer",
alignSelf: "center",
fontSize: 18,
}}
>
{users.userID}
</span>
<div>
<Link to="/profileedit">
<Button
id="EditButton"
>Edit</Button>
</Link>
<Button
id="DeleteButton"
variant="danger"
className="mx-2"
onClick={() => deleteHandler(users.id)}
>
Delete
</Button>
</div>
</Card.Header>
我将展示我的 Reducer 功能:
export const userListReducer = (state = {}, action) => {
switch (action.type) {
case USER_LIST_REQUEST:
return { loading: true };
case USER_LIST_SUCCESS:
return { loading: true, userList: action.payload, success: true };
case USER_LIST_FAIL:
return { loading: false, error: action.payload, success: false };
default:
return state;
}
}
这是我的用户操作:
export const getUsers = (user) => async (dispatch, getState) => {
try {
dispatch({ type: USER_LIST_REQUEST });
const {
userLogin: { userInfo },
} = getState();
const config = {
headers: {
Authorization: `Bearer ${userInfo.token.token}`,
},
};
const url = "http://localhost:8080/user/"
const { data } = await axios.get(url, config);
dispatch({ type: USER_LIST_SUCCESS, payload: data });
} catch (error) {
dispatch({
type: USER_LIST_FAIL,
payload:
error.response && error.response.data.message
? error.response.data.message
: error.message,
});
}
};
【问题讨论】:
-
How do I ask a good question?:“写一个总结具体问题的标题”
-
你有一行映射你的用户,但它当前显示`users?.map` 你需要那个问号吗?很确定这不是 Javascript 语法。您只希望它是 Array.map() 或在您的情况下为 users.map()
-
尝试在你的 useEffect 中加入一个 console.log,我怀疑它从来没有被调用过
-
@Shaded 它没有改变任何东西..但为什么我的 console.log(users) 未定义。 ..
-
@NickGr 我得到了这个.. useEffect(create, deps) { var dispatcher = resolveDispatcher();.... 等等.. 你的意思是这个 console.log(useEffect);
标签: javascript reactjs