Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 盖茨比图_Javascript_Reactjs_Graphql_Gatsby - Fatal编程技术网

Javascript 盖茨比图

Javascript 盖茨比图,javascript,reactjs,graphql,gatsby,Javascript,Reactjs,Graphql,Gatsby,我试图通过一个增加state.count的按钮从graphql中翻阅Gatsby中react组件中的数据 单击按钮时,state.count将递增,但不会传递给查询 你知道我做错了什么吗 pageUp=() => { this.setState({count: this.state.count +2}); let skip=this.state.count } render() { return ( <StaticQuery query={graphql`

我试图通过一个增加state.count的按钮从graphql中翻阅Gatsby中react组件中的数据

单击按钮时,state.count将递增,但不会传递给查询

你知道我做错了什么吗

pageUp=() => {
this.setState({count: this.state.count +2});
let skip=this.state.count
}

render() {
return (
  <StaticQuery
    query={graphql`
      query ListingPageQuery ($skip:Int){
        allMarkdownRemark(
          limit:2
          skip: $skip
          ) 
          {
          ...
        }
      }
    `
    }...
pageUp=()=>{
this.setState({count:this.state.count+2});
让跳过=this.state.count
}
render(){
返回(

我在这段代码中看到两个问题。首先:

pageUp=() => {
    let skip=this.state.count
}
let
语句会使
skip
变量成为此函数的局部变量。从您的问题来看,是什么原因导致它传递到GraphQL查询并不明显,但如果它是成员变量或其他内容,则此语句会将其隐藏,并且您正在设置一个状态将丢失的纯局部变量

第二:

this.setState({count: this.state.count +2});
let skip=this.state.count
,React文档特别建议不要以现有方式更改状态(有一种更合适的基于回调的模式)。这样做的另一个后果是,当您到达下一行时,状态可能没有实际更新,因此您正在从“旧”中分配
count
将状态设置为
skip
变量


查看盖茨比文档,有一个特别的注意事项,尽管浏览它并没有建议另一条路径(显示可能分页的数据的每个示例只显示第一页。)

我在这段代码中看到两个问题。首先:

pageUp=() => {
    let skip=this.state.count
}
let
语句会使
skip
变量成为此函数的局部变量。从您的问题来看,是什么原因导致它传递到GraphQL查询并不明显,但如果它是成员变量或其他内容,则此语句会将其隐藏,并且您正在设置一个状态将丢失的纯局部变量

第二:

this.setState({count: this.state.count +2});
let skip=this.state.count
,React文档特别建议不要以现有方式更改状态(有一种更合适的基于回调的模式)。这样做的另一个后果是,当您到达下一行时,状态可能没有实际更新,因此您正在从“旧”中分配
count
将状态设置为
skip
变量


查看盖茨比文档,有一个特别的注意事项,尽管浏览它并不会建议另一条路径(显示可能分页的数据的每个示例只显示第一页)

使用盖茨比无法做到这一点。GraphQL只在构建时发生,而不是在客户端上发生。您需要获取所有内容,然后使用JS只显示/跳过要显示的内容

查看Gatsby文档,有一个特别的注意事项是StaticQuery不支持GraphQL变量,尽管浏览它并不建议另一个支持该变量的路径

此外,正如David Maze所说,StaticQuery不支持此类变量。这在普通查询中也不起作用,因为此类变量需要通过上下文传递。


只有通过上下文传递它,它才能在
pageContext
中使用,并作为查询中的变量(通常用于模板)。

使用盖茨比无法做到这一点。GraphQL只在构建时发生,而不是在客户端上。您需要获取所有内容,然后使用JS仅显示/跳过您想要显示的内容

查看Gatsby文档,有一个特别的注意事项是StaticQuery不支持GraphQL变量,尽管浏览它并不建议另一个支持该变量的路径

此外,正如David Maze所说,StaticQuery不支持此类变量。这在普通查询中也不起作用,因为此类变量需要通过上下文传递。

只有通过上下文传递时,它才能在
pageContext
中使用,并作为查询中的变量(通常用于模板)。

setState()是异步的。捕获状态的正确方法是在回调中,也可以使用
prev
参数引用setState()中的状态:

引用:

setState()是异步的。捕获状态的正确方法是在回调中,也可以使用
prev
参数引用setState()中的状态:


参考资料:

谢谢DavidMaze。非常好的建议,谢谢。我将在状态更新中处理回调问题,但对我来说更大的问题是您和@lekoarts指出的关于staticqueries的问题-盖茨比如何将分页数据拉入非页面组件。在我当前的使用案例中,不会有数百个博客,因此我可以拉它们都出来了,然后分块显示出来。谢谢DavidMaze。非常好的建议谢谢。我将在状态更新时处理回调,但对我来说更大的问题是您和@lekoarts指出的关于静态查询的问题-盖茨比如何将分页数据拉入非页面组件。在我当前的用例中,不会有hundreds的博客,这样我就可以把它们全部拉出来,然后把它们分块展示。再次感谢@lekoarts的伟大建议。正如我上面提到的,我正在努力解决如何做到这一点,即使我使用了上下文-大多数例子都是关于构建“页面”但我只想在一个组件上创建分页记录。我真的需要把整个数据集拉回来,然后分块显示吗?我不太清楚你的用例,但有分页插件和在线文章,展示了如何创建分页。这一切都发生在
gatsby node.js
中,不过这些页面将在bui创建ld时间。再次感谢@lekoarts的伟大建议。正如我前面提到的,我正在努力解决如何做到这一点,即使我使用了上下文-大多数示例都是关于构建“页面”但我只想在一个组件上创建分页记录。我真的需要把整个数据集拉回来,然后分块显示吗?我不太清楚你的用例,但有分页插件和在线文章,展示了如何创建分页。这一切都发生在
gatsby node.js
中,尽管如此