我正在Jekyll建立一个网站.要在帖子中删除html扩展名,我将以下内容添加到_config.yml中
permalink: /kb/:title
Run Code Online (Sandbox Code Playgroud)
要从页面中删除html扩展名,我为每个页面创建了文件夹,并在每个页面文件夹中放置了一个index.html文件.
现在帖子和页面没有html扩展名,但是当我链接到带有page.url的页面时,它返回整个链接(/kb/index.html)而不是/ kb.
我可以用什么变量链接到没有html扩展名的页面?
有没有办法在 Jekyll 网站上显示基于 Google Analytics 的页面浏览量?我们一直在使用jekyll-ga插件,但它已经很长时间没有更新了。因此,例如,更新 google-api-client(以将其与最新版本的 Ruby 一起使用)会引发很多错误。
从 Google Analytics 实时获取页面浏览量会很棒(不仅仅是在构建时)。但是现在我们正在寻找任何可以替代 jekyll-ga 插件的解决方案。
我将不胜感激任何反馈。
google-analytics google-api google-analytics-api jekyll jekyll-extensions
我使用的是formik同@jbuschke/formik-antd和react-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) 我正在使用自定义组件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})。
我想将 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整个存储库而不是单个文件。
我正在为 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) 我在可折叠 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) 我正在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) 我想用 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 检查应用程序时,我看到我的钩子有多个“状态”值,而不是“订单”、“付费”、“提交”等。
这是我的代码和框的链接。
我的错误在哪里?如何设置多个状态值以在以后分别更新它们?
我的盖茨比网站的页面布局如下所示。
const Container = ({location, children, pageContext}) => {
return (
<>
<Header location={location} />
<Breadcrumbs pageContext={pageContext} />
{children}
<Footer />
</>
)
}
Run Code Online (Sandbox Code Playgroud)
我需要将location和pageContext从页面传递到子组件。我尝试添加location和pageContext到DataProvider这样的:
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.js和gatsby-browser.js这样的:
export const wrapRootElement = ({ …Run Code Online (Sandbox Code Playgroud) reactjs ×6
antd ×3
gatsby ×2
github-api ×2
graphql ×2
javascript ×2
jekyll ×2
formik ×1
github ×1
google-api ×1
liquid ×1
ruby ×1