다음 문제점이 있습니다. 나는의 클래스가 더 많거나 적은 모양이 같은되는-반응 네이티브 :. 내 모든 기능에componentDidMount에서 반응 네이티브로 리스너를 설정하지만 호출되지 않는 새 화면으로 전달하십시오.
import {...};
const ReadyButton = props => (
<View>
<RoundButton
width={175}
text="..."
onPress={props.onPress}
/>
</View>
);
ReadyButton.propTypes = {
onPress: PropTypes.func,
};
const ReadyButtonContainer = connect(null, dispatch => ({
onPress:() => {
dispatch(askIgnoreBatteryOptimizations(requestLocationPermissions));
},
}))(ReadyButton);
export default class CalibrationWalkInstructions extends Component {
componentDidMount() {
listenToPermissionChanges();
}
render() {
const enableBackgroundDataCollectionMessage = (Platform.OS === 'ios')
? '...'
: '...';
return (
<ScreenWrapper>
<CenterContent>
<StandardWrapper spacing={15}>
<FullWidthImage
source={PhoneInPocketIconImage}
width={300}
height={380}
scale={0.6}
/>
</StandardWrapper>
<StandardWrapper spacing={15}>
<PrimaryText>
...
</PrimaryText>
</StandardWrapper>
<StandardWrapper>
<PrimaryText>
{enableBackgroundDataCollectionMessage}
</PrimaryText>
</StandardWrapper>
<ReadyButtonContainer />
</CenterContent>
<TutorialBottomProgress currentStep={2} stepName={'Walk'} align={'right'} />
</ScreenWrapper>
);
}
};
또한 내가 파일을 불렀다 actions.js 여기에서 나는 부착 다음 함수를 호출 할 위치 권한이 iOS 설정에서 부여되거나 변경된 경우 리스너입니다. 함수의 콜백은 사용자를 다음 화면으로 직접 유도합니다. action.js 나의 기능은 지금까지 다음과 같습니다
export function listenToPermissionChanges() {
console.log('FOOO listenToPermissionChanges called');
return function(dispatch) {
console.log('FOOO inside dispatch');
listenToLocationPermissionChanges(function() {
detachLocationPermissionChangeListener();
console.log('FOOO dispatch now');
dispatch({
type: LOCATION_PERMISSION_GRANTED,
});
dispatch(goToWalkCalibration());
});
};
}
내가 위에서처럼 componentDidMount()이 함수를 호출 할 경우, 안 상기 제 FOOO 로그 문에 도달하지만, 할 수 있어요. 제 질문은 지금입니다, 왜 더 이상 얻지 못합니까? componentDidMount() 함수에서 디스패치 호출을 호출 할 수 없다는 문제가 있습니까? return 문이 누락되었거나 나머지는 실행하지만 시작되지 않는 이유는 무엇입니까?
도움/답변을 미리 보내 주셔서 감사합니다.
'listenToPermissionChanges()'는 두 번째 기능 (Currying)을 반환합니다. 두 부분을 모두 실행하려면'listenToPermissionChanges() (dispatch)'를 실행해야합니다 - 아주 간단한 예제는 https://jsfiddle.net/arrbgbqn/을보세요. – Dan