小编jup*_*ror的帖子

如何在没有Jekyll的html扩展名的情况下链接到带有page.url的页面?

我正在Jekyll建立一个网站.要在帖子中删除html扩展名,我将以下内容添加到_config.yml中

permalink:        /kb/:title
Run Code Online (Sandbox Code Playgroud)

要从页面中删除html扩展名,我为每个页面创建了文件夹,并在每个页面文件夹中放置了一个index.html文件.

现在帖子和页面没有html扩展名,但是当我链接到带有page.url的页面时,它返回整个链接(/kb/index.html)而不是/ kb.

我可以用什么变量链接到没有html扩展名的页面?

ruby liquid jekyll

8
推荐指数
1
解决办法
3008
查看次数

在 Jekyll 中显示基于 Google Analytics 的页面浏览量

有没有办法在 Jekyll 网站上显示基于 Google Analytics 的页面浏览量?我们一直在使用jekyll-ga插件,但它已经很长时间没有更新了。因此,例如,更新 google-api-client(以将其与最新版本的 Ruby 一起使用)会引发很多错误。

从 Google Analytics 实时获取页面浏览量会很棒(不仅仅是在构建时)。但是现在我们正在寻找任何可以替代 jekyll-ga 插件的解决方案。

我将不胜感激任何反馈。

google-analytics google-api google-analytics-api jekyll jekyll-extensions

5
推荐指数
0
解决办法
633
查看次数

在 Formik 中使用 setFieldValue onSubmit

我使用的是formik@jbuschke/formik-antdreact-input-mask。我有一个+7 (___) ___-__-__应用于其中一个输入的掩码,我需要解析它onSubmit以删除不必要的符号。

我定义了一个 const changedValue,然后在 中使用它setFieldValue,但出现以下错误:

Invariant Violation
Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
Run Code Online (Sandbox Code Playgroud)

这是我的代码和演示

const CloseForm = () => (
  <Formik
    initialValues={{ phone: "", email: "" }}
    onSubmit={(values, { setSubmitting, setFieldValue }) => {
      const changedValue = values.phone.replace(/\(|\)|\s|-/g, "");
      setTimeout(() => …
Run Code Online (Sandbox Code Playgroud)

reactjs antd formik

5
推荐指数
1
解决办法
3074
查看次数

在react-final-form中清除输入时清除字段的值

我正在使用自定义组件react-final-form。输入更改时,它将值设置为字段address。但是当清除输入时,它不会更新字段的值。所以我试图用形式变异器来做到这一点。

我已经添加了一个用于清除字段的修改器:

mutators={{
  clear: ([address], state, { changeValue }) => {
    changeValue(state, "address", () => undefined);
  }
}}
Run Code Online (Sandbox Code Playgroud)

我尝试将其添加到我的自定义 onChange 函数中,但它不起作用。

onChange={event =>
  props.input.onChange !== undefined
    ? props.input.onChange({ value: event })
    : form.mutators.clear
}
Run Code Online (Sandbox Code Playgroud)

或者也许这根本不需要变异器就可以完成?我将衷心感谢您的帮助。这是一个实例(清除该字段仅适用于单击按钮 as onClick={form.mutators.clear})。

reactjs react-final-form

5
推荐指数
2
解决办法
2万
查看次数

从 GitHub 存储库获取文件信息的 GraphQL 查询

我想将 GitHub 存储库用于 Gatsby 站点中的帖子。现在我正在使用两个查询,首先是获取文件的名称:

{
  viewer {
    repository(name: "repository-name") {
      object(expression: "master:") {
        id
        ... on Tree {
          entries {
            name
          }
        }
      }
      pushedAt
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

第二个获取文件的内容:

{
  viewer {
    repository(name: "repository-name") {
      object(expression: "master:file.md") {
        ... on Blob {
          text
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获取有关每个文件的创建时间和上次使用 GraphQL 更新的信息?现在我只能获取pushedAt整个存储库而不是单个文件。

github github-api graphql

5
推荐指数
1
解决办法
1060
查看次数

使用 Github GraphQL API 在一个 Promise.All 中获取不同数组的结果

我正在为 Gatsby 制作一个自定义源插件,它将从 GitHub 存储库获取 Markdown 文件。存储库具有单独的文件(blob)和文件夹(树),它们又包含文件。我需要将所有文件(包括文件夹内的文件)放在一个中Promise.all,但我不知道如何做到这一点。我已经设法从存储库中获取单个文件,并且有一个函数可以从树中返回文件数组。但我不知道如何将它们结合起来。

这是我的代码。GraphQL 查询以获取存储库、树和文件信息:

const repositoryQuery = `
{
  viewer {
    repository(name: "repository-name") {
      object(expression: "master:") {
        ... on Tree {
          entries {
            name
            oid
            type
          }
        }
      }
    }
  }
}
`

const treeQuery = `
  query getTree($id: GitObjectID!) {
    viewer {
      repository(name: "repository-name") {
        object(oid: $id) {
          ... on Tree {
            entries {
              name
              oid
              type
            }
          }
        }
      }
    }
  }
`

const fileQuery = `
  query getFile($id: GitObjectID!) { …
Run Code Online (Sandbox Code Playgroud)

javascript github-api graphql gatsby

5
推荐指数
1
解决办法
2495
查看次数

在 Sider 内的 Ant Design 菜单中重置 openKeys 时出现问题

我在可折叠 Sider 中有 antd 菜单。我已经为其中一个子菜单设置了默认打开键,它们应该一次打开一个。这是我的菜单代码:

const MainMenu = ({ defaultOpenKeys }) => {
  const [openKeys, setOpenKeys] = useState(defaultOpenKeys);
  const rootKeys = ["sub1", "sub2"];
  // Open only one submenu at a time
  const onOpenChange = props => {
    const latestOpenKey = props.find(key => openKeys.indexOf(key) === -1);
    if (rootKeys.indexOf(latestOpenKey) === -1) {
      setOpenKeys(props);
    } else {
      setOpenKeys(latestOpenKey ? [latestOpenKey] : defaultOpenKeys);
    }
  };
  return (
    <Menu
      theme="dark"
      openKeys={openKeys}
      defaultSelectedKeys={["1"]}
      mode="inline"
      onOpenChange={onOpenChange}
    >
      <Menu.Item key="1">
        Option 1
      </Menu.Item>
      <SubMenu key="sub1" title="User">
        <Menu.Item key="2">Tom</Menu.Item> …
Run Code Online (Sandbox Code Playgroud)

reactjs antd

5
推荐指数
1
解决办法
5508
查看次数

过滤 Ant Design Tree 中的树节点

我正在Ant Design 中使用可搜索树组件。我想在搜索时过滤树节点。因此,如果找到搜索值,则会显示树节点。如果不是,则将其隐藏(即过滤)。

API中有一个filterTreeNodeprop。是否可以使用此道具过滤树节点(隐藏搜索中不相关的树节点)?如果不可以,怎样才能达到想要的效果呢?

这是我的函数代码filterTreeNode

const filterTreeNode = (node) => {
  const title = node.title.props.children[2];
  const result = node.key.indexOf(searchValue) !== -1 ? true : false
  console.log(searchValue);
  console.log(result);
  return result;
};
Run Code Online (Sandbox Code Playgroud)

我可以看到结果(真或假)记录在控制台中,但树本身没有任何反应。

以下是codesandbox的链接以及该组件的完整代码:

import React, { useState } from "react";
import ReactDOM from "react-dom";
import { Tree, Input } from "antd";
import gData from "./gData.js";

const { Search } = Input;

const dataList = [];
const generateList = (data) => {
  for (let i …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs antd

4
推荐指数
1
解决办法
1万
查看次数

使用 React useState hook 设置多个状态值

我想用 React useState 钩子设置多个状态值,以便我可以用 useEffect 钩子分别更新它们。我有以下代码:

import React, { useState } from "react";

const initialValues = {
  phone: "",
  email: ""
};

const App = () => {
  const [order, setOrder] = useState("");
  const [paid, setPaid] = useState(false);
  const [submitting, setSubmitting] = useState(false);
  const [loading, setLoading] = useState(false);
  const [data, setData] = useState(initialValues);

  return (
    <div className="App">
    </div>
  );
};

export default App;
Run Code Online (Sandbox Code Playgroud)

但是当我使用 React DevTools 检查应用程序时,我看到我的钩子有多个“状态”值,而不是“订单”、“付费”、“提交”等。

这是我的代码和框的链接。

我的错误在哪里?如何设置多个状态值以在以后分别更新它们?

reactjs

3
推荐指数
2
解决办法
7413
查看次数

在 Gatsby 中将位置和 pageContext 从页面传递到子组件

我的盖茨比网站的页面布局如下所示。

const Container = ({location, children, pageContext}) => {
  return (
    <>
      <Header location={location} />
      <Breadcrumbs pageContext={pageContext} />
      {children}
      <Footer />
    </>
  )
}
Run Code Online (Sandbox Code Playgroud)

我需要将locationpageContext从页面传递到子组件。我尝试添加locationpageContextDataProvider这样的:

export const DataContext = React.createContext();

const DataProvider = ({ children, location, pageContext }) => {
  return (
    <DataContext.Provider value={{
      location,
      pageContext
    }}>
      {children}
    </DataContext.Provider>
  )
};

export default DataContext
export { DataProvider }
Run Code Online (Sandbox Code Playgroud)

然后我使用DataProvideringatsby-ssr.jsgatsby-browser.js这样的:

export const wrapRootElement = ({ …
Run Code Online (Sandbox Code Playgroud)

reactjs gatsby

2
推荐指数
1
解决办法
3666
查看次数