我已经为此苦苦挣扎了两个小时,但找不到解决方法
当我按下按钮时,正在调用功能“ getLocation”(选中)
但是调度没有传递给reducer
从类似的线程中,我发现可能是因为getLocation是一个函数并且props值设置为函数。有什么方法可以调用此函数,也可以通过其他任何方式进行调度调用存储吗?
下面是我的代码:
actions / geolocationAction.js
export function getLocation() {
const geolocation = navigator.geolocation;
return dispatch =>
geolocation.getCurrentPosition((position) =>
{
dispatch({
type: GET_LOCATION,
latitude: position.coords.latitude,
longitude: position.coords.longitude
});
});
}
位置按钮
class LocationButton extends Component {
render() {
return (
<div>
<button onClick = { this.props.locationReceived } >Geo</button>
</div>
);
}
}
const mapDispatchToProps = dispatch => ({
locationReceived: () => dispatch(getLocation())
});
export default connect(null, mapDispatchToProps)(LocationButton);
geolocationReducer
const geolocationReducer = (state = initialState, action) => {
switch(action.type){
default:
return state;
}
};
export default geolocationReducer;
和减速器 index
export default combineReducers({
location: geolocationReducer
});
如果您能给我一些解决问题的技巧,我将非常感激
答案 0 :(得分:1)
现在,您无需检查geolocation.getCurrentPosition
错误回调。尝试返回一个不使用geolocation.getCurrentPosition
的空白thunk,仅返回带有一些示例数据的调度。如果可行,请为error参数包含一个回调,并使用已传递的错误调度GET_LOCATION_ERROR
之类的操作。