Я думаю, вы спрашиваете, как перемещаться внутри файла саги, даже если ваш вопрос не показывает файл саги.
Вы можете передать объект навигации в действии, которое ожидает ваша сага, и затем использовать его как обычно в этом файле.
Я использую это для навигации после успешного действия регистрации.Вот пример.
В вашем компоненте:
class SignUpForm extends Component {
constructor(props) {
super(props);
this.state = {
email: '',
password: '',
};
}
...
dispatchSignUp() {
const { email, password } = this.state;
const { signUp, navigation } = this.props;
signUp(email, password, navigation);
}
render() {
...
<Button onPress={() => this.dispatchSignUp()} />
...
}
}
export const mapDispatchToProps = dispatch => ({
signUp: (email, password, navigation) => dispatch(signUpAction(email, password, navigation)),
});
export default connect(null, mapDispatchToProps)(SignUpForm);
ваше действие:
const signUp = (email, password, navigation) => ({
type: 'SIGN_UP',
email,
password,
navigation,
});
export default signUp;
ваша сага:
import { takeLatest, call, put } from 'redux-saga/effects';
import { createUser } from '../services/index';
export function* signUpWorker(action) {
try {
const { email, password, navigation } = action;
const payload = { email, password };
const data = yield call(createUser, payload);
yield put({ type: 'SIGN_UP_SUCCESS', data });
navigation.navigate('Main');
} catch (error) {
yield put({ type: 'SIGN_UP_ERROR', error });
}
}
export default function* signUpWatcher() {
yield takeLatest('SIGN_UP', signUpWorker);
}
navigation.navigate('Main')
является важной частью,Надеюсь, не было слишком много мусора на пути
Приветствия.