将道具传递到另一个屏幕时,我遇到一个奇怪的问题。
我传递两个参数;title
和body
,进入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.title
或params.body
,则两者均应显示。但是,根据文档,调用title
或body
应该可以。
但是,这是另一个问题。如果我更改const { title } = params ? params.title : null;
为const { title } = params.title
它,当我打电话时它仍然显示为未定义title
我很沮丧 到目前为止,我可以调用params.title
或params.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
问题出在你的代码上
const { title } = params ? params.title : null;
const { body } = params ? params.body : null;
三元条件决定了您要在哪个对象上执行解构分配。您的情况是params.title
或params.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] 删除。
我来说两句