我想在需要时调用 useQuery,
但是 useQuery 不能在函数内部。
我的尝试代码是:
export const TestComponent = () => {
...
const { data, loading, error } = useQuery(gql(GET_USER_LIST), {
variables: {
data: {
page: changePage,
pageSize: 10,
},
},
})
...
...
const onSaveInformation = async () => {
try {
await updateInformation({...})
// I want to call useQuery once again.
} catch (e) {
return e
}
}
...
Run Code Online (Sandbox Code Playgroud)
如何多次调用 useQuery?
我可以随时调用它吗?
我找了几个网站,但找不到解决方案。
尝试向 react-select 中的选项添加图标。我从文件england.svg, 中导入了 svg 图标germany.svg。我创建customSingleValue并放入
<Select components={{ SingleValue: customSingleValue }} />
Run Code Online (Sandbox Code Playgroud)
显示标签,但不显示图标。
演示在这里:https : //stackblitz.com/edit/react-q19sor
import Select from 'react-select'
import { ReactComponent as IconFlagEngland } from "./england.svg";
import { ReactComponent as IconFlagGermany } from "./germany.svg";
const options = [
{ value: 'England', label: 'England', icon: <IconFlagEngland/> },
{ value: 'Germany', label: 'Germany', icon: <IconFlagGermany/> }
]
const customSingleValue = ({ options }) => (
<div className="input-select">
<div className="input-select__single-value">
{ options.icon && <span …Run Code Online (Sandbox Code Playgroud) 我有一个网络应用程序,并且为此做了一个附加的Google chrome扩展程序。如果我登录到网站,则如何在Google chrome扩展程序中检测到它,因此我不必再次登录扩展程序。当我登录到站点时,我希望扩展程序检测到我已登录到该站点并自动登录到该扩展程序。
我有以下错误:
无法加载内容脚本的JavaScript文件“ content.js”。
manifest.json
{
"name": "EXTENSION",
"options_page": "options.html",
"background": {
"page": "background.html"
},
"content_scripts": [{
"matches": [ "*://*.app.com/*" ],
"js": [ "content.js" ],
"all_frames": true
}],
"browser_action": {
"default_popup": "popup.html",
"default_icon": "icon-34.png"
},
"icons": {
"128": "icon-128.png"
},
"permissions": [
"https://*/",
"http://*/",
"*://*.app.com/*",
"storage"
],
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
Run Code Online (Sandbox Code Playgroud)
content.js
if(chrome && chrome.storage){
chrome.storage.sync.get('token', function(result){
const item = result['access_token'];
console.log(item);
chrome.runtime.sendMessage(item, function(response) {
console.log(response);
});
});
}
var port …Run Code Online (Sandbox Code Playgroud) 当尝试在 mozilla firefox 中加载 chrome 扩展时。我有错误:
读取清单:处理 options_page 时出错:在 WebExtension 中发现意外属性 读取清单:处理 options_page 时出错:在 WebExtension 清单中发现意外属性。
{
"name": "EXTENSION",
"options_page": "options.html",
"background": {
"page": "background.html"
},
"browser_action": {
"default_popup": "popup.html",
"default_icon": "icon-34.png"
},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+A"
}
}
},
"icons": {
"128": "icon-128.png"
},
"permissions": [
"https://*/",
"http://*/"
],
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
Run Code Online (Sandbox Code Playgroud) javascript firefox-addon google-chrome-extension firefox-addon-webextensions
如何设置预加载器axios.interceptor以关闭数据在页面上的显示方式?此时,我可以看到数据已下载,预加载器关闭,当数据出现在页面上时,我可以看到跳转。预期效果:当网站上出现数据时禁用预加载器。
示例:https : //stackblitz.com/edit/react-ca6osn?file=src%2FApp.js
Axios.interceptors.request.use(function (config) {
// spinning start to show
// UPDATE: Add this code to show global loading indicator
document.body.classList.add('loading-indicator');
return config
}, function (error) {
return Promise.reject(error);
});
Axios.interceptors.response.use(function (response) {
// spinning hide
// UPDATE: Add this code to hide global loading indicator
document.body.classList.remove('loading-indicator');
return response;
}, function (error) {
return Promise.reject(error);
});
export default function App() {
const [values, setValues] = useState({
title: []
});
useEffect(() => {
loadProfile();
}, []); …Run Code Online (Sandbox Code Playgroud) 创建独立的秒表。我有两个名为A和的元素B。当我单击该A元素时,Hello将显示其描述和秒表。当我单击该B元素时,World将显示其描述和秒表。我的秒表有问题。当我单击该元素A并启动秒表时,请转到该元素,B然后此秒表将运行。我的目标是,当我为该元素运行秒表时,A它将仅计入该元素。当他将秒表停在元素A中并转到元素时B,秒表将仅在该元素中计数。我将秒表停在B元素中,然后转到A元素,我将能够恢复秒表。我正在寻求一些想法来解决这个问题。我通过调用startTime函数(方法发布->具有开始日期的对象)进行发送。我单击停止->调用stopTimer(方法发布->我向对象发送结束日期)。作为响应,该项目将带有开始日期和结束日期,并且将秒数(结束日期与开始日期之间的差)保存在状态中。根据这些数据(开始日期,结束日期和秒),设置秒表停止的时间。如何关闭浏览器以下载此数据以设置其停止时间。请给我一些提示。我将定期更正我的代码,并将其插入此处。
预期效果:
单击元素A->开始秒表->秒表停止->单击元素B->开始秒表->返回元素A->恢复计时器停止时间
整个代码在这里:https : //stackblitz.com/edit/react-x9h42z
部分代码:
App.js
class App extends React.Component {
constructor() {
super();
this.state = {
items: [
{
name: 'A',
description: 'Hello'
},
{
name: 'B',
description: 'World'
}
],
selectIndex: null
};
}
select = (index) => {
this.setState({
selectIndex: index
}) …Run Code Online (Sandbox Code Playgroud) 我单击项目->我从url获取数据https: // app / api / v1 / asset / $ {id}。数据保存在中loadItemId。我正在loadItemId从组件移动Items到组件Details,然后到组件AnotherItem。每次我点击Item道具loadItemId更改getDerivedStateFromProps方法。问题:我将点击Element D- >我的console.log看到“真”,然后我将点击Element E- >它显示的console.log true和false同时,它应该只显示false。
试图创建一个三元运算符{this.state.itemX ['completed'] ? this.start () : ''}。如果{this.state.itemX ['completed']调用函数this.start ()
代码在这里:stackblitz
图片:https : //imgur.com/a/OBxMKCd
物品
class Items extends Component {
constructor (props) {
super(props);
this.state = {
itemId: null,
loadItemId: …Run Code Online (Sandbox Code Playgroud) 当令牌过期时,我想根据refresh_token 获取一个新令牌。我已经读到这可以通过axios.interceptors.
请检查是否:
Items班级上方。axios.interceptors.response分配给interceptor变量。我应该如何处理这个变量?除了`axios.interceptors',我还需要一个新的令牌。令牌的有效期为 24 小时。
代码在这里:https : //stackblitz.com/edit/react-pkea41
import axios from 'axios';
axios.defaults.baseURL = localStorage.getItem('domain');
const interceptor = axios.interceptors.response.use(
response => response,
error => {
// Reject promise if usual error
if (errorResponse.status !== 401) {
return Promise.reject(error);
}
/*
* When response code is 401, try to refresh the token.
* Eject the interceptor so it doesn't loop in case
* token …Run Code Online (Sandbox Code Playgroud) 我正在尝试安装react-input-search。我有错误:
找不到模块“ react-search-input”的声明文件。'... / app / node_modules / react-search-input / lib / index.js'隐式具有'any'类型。尝试
npm install @types/react-search-input是否存在该文件或添加包含declare module 'react-search-input';ts(7016)的新声明(.d.ts)文件
我在模型中有以下方法UserSchema:
userSchema.virtual('password')
.set(function(password) {
this._password = password;
this.salt = this.makeSalt();
this.hashed_password = this.encryptPassword(password);
})
.get(function() {
return this._password;
}
);
Run Code Online (Sandbox Code Playgroud)
但是当我创建 newteacher我有错误hashed_password is required。所以我认为virtualfrom 的userSchema方法不是继承于teacherSchema. 如何设置teacherSchema像virtualfrom这样的继承方法userSchema?
模型
const mongoose = require('mongoose');
extend = require('mongoose-extend-schema');
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: {
type: String,
trim: true,
required: true,
maxLength: 32
},
surname: {
type: String,
trim: true,
required: true, …Run Code Online (Sandbox Code Playgroud) javascript ×10
reactjs ×8
axios ×2
css ×1
ecmascript-6 ×1
firefox-addon-webextensions ×1
graphql ×1
mongodb ×1
mongoose ×1
node.js ×1
oauth ×1
react-apollo ×1
react-hooks ×1
react-select ×1