Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在我用React Native和Apollo构建的应用程序中从我的帖子列表中呈现一篇帖子?_Javascript_React Native_Blogs_Apollo - Fatal编程技术网

Javascript 如何在我用React Native和Apollo构建的应用程序中从我的帖子列表中呈现一篇帖子?

Javascript 如何在我用React Native和Apollo构建的应用程序中从我的帖子列表中呈现一篇帖子?,javascript,react-native,blogs,apollo,Javascript,React Native,Blogs,Apollo,所以我正在尝试构建一个类似于博客的应用程序。我不知道如何呈现被选中阅读的一篇文章 <TouchableWithoutFeedback onPress={ () => this.props.navigation.navigate('Unique')}> <Text style={styles.titleStyle}>{post.title}</Text> </TouchableWithoutFeedback> this.props.nav

所以我正在尝试构建一个类似于博客的应用程序。我不知道如何呈现被选中阅读的一篇文章

<TouchableWithoutFeedback onPress={ () => this.props.navigation.navigate('Unique')}>
  <Text style={styles.titleStyle}>{post.title}</Text>
</TouchableWithoutFeedback>
this.props.navigation.navigate('Unique')}>
{post.title}
^这是将我导航到我单击的帖子的事件(不确定如何传递其道具或id)

这是我重定向到的组件:

class Page extends Component {
  render(){
    return(
      <ScrollView>
        <Query query={UniqueNews}>
          {({data, loading})=> {
            if(loading) return <Text>Loading</Text>;
            const {posts} = data;
            return posts.map(post=>
              <OneNews key={post.id} post={post} />
            )
          }}
        </Query>
      </ScrollView>
    )
  }
}

const UniqueNews = gql `query{
  posts{
    title
    author
    date
    id
    body
    image{
      url
    }
  }
}
`
类页扩展组件{
render(){
返回(
{({data,loading})=>{
如果(装载)返回装载;
const{posts}=数据;
返回posts.map(post=>
)
}}
)
}
}
const UniqueNews=gql`query{
职位{
标题
作者
日期
身份证件
身体
形象{
网址
}
}
}
`
OneNews=

<View style={styles.containerStyle}>
      <View style={styles.cardSectionStyle}>
        <Text>{title}</Text>
        <Text>{author}</Text>
        <Text>{body}</Text>
      </View>
</View>

{title}
{作者}
{body}

当我渲染或导航到该屏幕时,将显示每个帖子,而不是我点击的帖子。我该如何设置?我期望的输出是只看到其中一个帖子(通过点击选中的帖子)并进行渲染。谢谢

我找到了解决这个问题的方法:

首先,我将在导航到唯一组件时传递一个参数:

<TouchableWithoutFeedback onPress={ () => this.props.navigation.navigate('Unique', {id: post.id})}>
    <Text style={styles.titleStyle}>{post.title}</Text>
</TouchableWithoutFeedback>
this.props.navigation.navigate('Unique',{id:post.id})}>
{post.title}
之后,我将在该唯一组件内进行条件渲染:

<ScrollView>
 <Query query={singleNews}>
    {({data, loading})=> {
       if(loading) return <Text>Loading</Text>;
        const {posts} = data;
          return posts.map(post=>
            {if(this.props.navigation.state.params.id===post.id)
              return <View>
               <OneNews key={post.id} post={post} />
              </View>}
            )}}
        </Query>
      </ScrollView>

{({data,loading})=>{
如果(装载)返回装载;
const{posts}=数据;
返回posts.map(post=>
{if(this.props.navigation.state.params.id==post.id)
返回
}
)}}
就这样