【发布时间】:2020-11-12 11:08:43
【问题描述】:
我试图将基于类的组件转换为功能样式。我有这个代码:
const [foo, setFoo] = useState(null);
const [roomList, setRoomList] = useState([]);
useEffect(() => {
setRoomList(props.onFetchRooms(props.token));
}, [props]);
let roomLists = <Spinner />;
if (!props.loading) {
roomLists = roomList.map(room => <Room key={room._id} roomName={room.name} />);
}
以前我有:
class Rooms extends Component {
state = {
foo: null
};
componentDidMount() {
this.props.onFetchRooms(this.props.token);
}
render() {
let roomList = <Spinner />;
if (!this.props.loading) {
roomList = this.props.rooms.map(room => <Room key={room._id} roomName={room.name} />);
}
onFetchRooms 是我在 mapDispatchToProps 中从 Redux 使用的一个函数。而rooms 也来自mapStateToProps 的Redux 商店使用上面的新代码,我得到Cannot read property 'map' of undefined。请问我做错了什么?
我也试过不使用状态:
useEffect(() => {
props.onFetchRooms(props.token);
}, [props]);
let roomList = <Spinner />;
if (!props.loading) {
roomList = props.rooms.map(room => <Room key={room._id} roomName={room.name} />);
}
但这会进入无限循环。
【问题讨论】:
-
setRoomList(props.onFetchRooms(props.token)); - onFetchRooms 返回什么?
标签: javascript arrays reactjs redux react-hooks