反应导航:使用this.props.navigation.state.params接收“未定义”

内森

将道具传递到另一个屏幕时,我遇到一个奇怪的问题。

我传递两个参数;titlebody,进入ArticleBody屏幕。

class ListButtonWrapper extends React.Component {
  constructor(props){
    super(props);
    this.articleSelected = this.articleSelected.bind(this);
  }

  articleSelected() {
    this.props.navigation.navigate('ArticleBody', {
      title: this.props.title,
      body: this.props.body
    });
  }

当按下按钮时,应该将这些道具传递到下一个屏幕。确实如此!

class ArticleBody extends React.Component {
render() {

    const { params } = this.props.navigation.state;
    const { title } = params ? params.title : null;
    const { body } = params ? params.body : null;
    console.log(title, body, params.title, params.body);
    return (
      <View>
      <Text>Title: {title}</Text>
      <Text>Body: {body}</Text>
      </View>
    );

但是,呼叫{title}{body}in<Text>不会显示任何内容。使用console.log显示{title}和{body}未定义

然而!如果我使用params.titleparams.body,则两者均应显示。但是,根据文档,调用titlebody应该可以。

但是,这是另一个问题。如果我更改const { title } = params ? params.title : null;const { title } = params.title,当我打电话时仍然显示为未定义title

我很沮丧 到目前为止,我可以调用params.titleparams.body直接调用,但是它也应该在定义的变量中起作用,对吗?

我究竟做错了什么?

更新

要添加一点更新。如果我console.log this.props.navigation.state,我看到道具正在传递给ArticleBody。这是日志:

{params: {…}, key: "id-1519274761934-2", routeName: "ArticleBody"}
key: "id-1519274761934-2"
params:
  body:"more stuff"
  title:"stuff"
__proto__
Object
routeName:"ArticleBody"
__proto__
Object
塔伦·拉尔瓦尼(Tarun Lalwani)

问题出在你的代码上

const { title } = params ? params.title : null;
const { body } = params ? params.body : null;

三元条件决定了您要在哪个对象上执行解构分配。您的情况是params.titleparams.body所以你实际上变成了

title = params.title.title
body = param.body.body

您应该使用

const { title, body } = params ? params: null;

要么

const title = params ? params.title: null;
const body = params ? params.body : null;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反应导航 - this.props.navigation.state 未定义

从反应中导航返回本机在this.props.navigation.state.params.filePath中给我未定义

在React Native中未定义this.props.navigation.state.params

通过导航传递状态时,this.props.navigation.state是未定义的吗?

反应this.props.params未定义

this.props.navigation.navigate()是未定义

this.props.navigation未定义(createStackNavigator)

反应导航中的 this.props.navigation 与 NavigationActions

反应导航错误this.props.navigation.navigat

React Native-导航问题“未定义不是对象(this.props.navigation.navigate)”

未定义不是对象(评估'this.props.navigation.navigate')-抽屉导航器

React Native 中的堆栈导航器。错误“未定义不是对象(评估 this.props.navigation)”

反应本机导航const {navigation} = this.props.navigation;

反应:路由器props.match.params.id未定义

反应this.props.children是未定义的

反应this.props是未定义的

获取未定义不是评估_this.props.navigation的对象

未定义(评估'this.props.navigation.navigate')React Native

TypeError:props.navigation.getParam 不是函数。(在 'props.navigation.getParam('docId')' 中,'props.navigation.getParam' 未定义)

如何通过eslint检查this.props.navigation.navigate(反应导航)?

反应使用this.state或this.props吗?

props 未定义,尽管 state 已更改

反应this.state未定义数组

使用 MapStateToProps 时未定义 props

每当我使用props.navigation.navigate('Game')时,在HeaderBackButton.tsx中反应本机导航问题

未定义不是对象(正在评估'_this2.props.navigation')<未知>-react-navigation

尝试导航到另一个屏幕时收到错误“未定义不是评估this.props.navigation的对象”

反应this.props在状态事件未定义?

反应this.props未定义或空对象