我已将REDUX集成到我的RN项目。我可以用按钮在屏幕之间导航,但是当我想返回headerbackbutton时,它说:"未定义不是函数"
github-repo:https://github.com/bayraktarhasan/react-navigation-navigation-redux-globalization-example.git
我的提要组件:
class Feed extends Component {
static navigationOptions = {
title: 'Hello Ahmet',
headerLeft: <HeaderBackButton onPress={this.goBack()} />,
}
constructor(props) {
super(props);
this.goBack = this.goBack.bind(this);
}
goBack = () => {
this.props.navBack();
}
render() {
return (
<View style={styles.container}>
<Text>{I18n.t('feedComponent')}</Text>
<Button
title={I18n.t('back')}
onPress={this.goBack}
/>
</View>
);
}
}
export default connect(null, { navBack, navToProfile })(Feed);
还原器:
import { NAVIGATE_BACK, NAVIGATE_PROFILE, NAVIGATE_FEED } from '../Actions/types';
const firstAction = AppNavigator.router.getActionForPathAndParams('Main');
const initialNavState = AppNavigator.router.getStateForAction(
firstAction
);
function nav(state = initialNavState, action) {
console.log(action.type);
let nextState;
switch (action.type) {
case NAVIGATE_BACK:
nextState = AppNavigator.router.getStateForAction(
NavigationActions.back(),
state
);
break;
这只是黑暗中的镜头,但又没有定义。也许尝试:
const goBack = () => {
this.props.navBack();
}
这很具有讽刺意味,因为昨天我遇到了同样的问题。这是如何正确分配URL作为动作创建者的道具的帖子
从上面的链接中可能还不清楚您可能需要做的事情。但是我会尝试解释我发现的内容(我不是任何专家)。您的代码将用于文本输入或日期选择器或类似的内容。这样:
<TextInput
label="Model"
placeholder="4020"
value={this.props.model}
onChangeText={value => this.props.entryUpdate({ prop: 'model', value })}
/>
文本输入已经有几个道具。在这里,您将值分配给
this.props.<whatever you want the specific object/prop to be called>
但是,使用按钮,您必须分配一个实际的道具名称/变量才能传递给您的动作创建者。在这里,您没有实际的道具。因此,它会像未定义一样返回。因此,您必须声明该道具的变量名称并将其分配给此。
this.props.navBack();
所以也许是:
const goBack = () => {
const { back } = this.props
this.props.navBack({ back });
}
,在您的情况下,您可能需要为prop {back}指定特定值。否则,它将告诉您您的第二个论点也不确定。
这是一个很酷的调试器,可帮助您查看您的道具是否真的传递给了动作创建者:
https://github.com/jhen0409/reaeact-native-debugger
希望对它的帮助更多。祝你好运!