小编Umb*_*bro的帖子

尝试使用 react-apollo-hooks 在函数中调用 useQuery

我想在需要时调用 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?

我可以随时调用它吗?

我找了几个网站,但找不到解决方案。

javascript reactjs graphql react-apollo react-hooks

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

如何在react-select中的选项中添加图标?

尝试向 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)

javascript css reactjs react-select

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

如何在Google Chrome扩展程序中检测到我登录到另一个网站?

我有一个网络应用程序,并且为此做了一个附加的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)

javascript google-chrome-extension reactjs

9
推荐指数
1
解决办法
495
查看次数

读取清单:处理 options_page 时出错:在 WebExtension 中发现意外属性

当尝试在 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

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

在网站上出现数据后禁用预加载器

如何设置预加载器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)

javascript reactjs axios

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

为数组中的每个项目创建独立的秒表。根据API返回的数据设置停止时间

创建独立的秒表。我有两个名为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)

javascript ecmascript-6 reactjs

7
推荐指数
2
解决办法
305
查看次数

getDerivedStateFromProps,在更改道具影响下的状态更改

我单击项目->我从url获取数据https: // app / api / v1 / asset / $ {id}。数据保存在中loadItemId。我正在loadItemId从组件移动Items到组件Details,然后到组件AnotherItem。每次我点击Item道具loadItemId更改getDerivedStateFromProps方法。问题:我将点击Element D- >我的console.log看到“真”,然后我将点击Element E- >它显示的console.log truefalse同时,它应该只显示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)

javascript reactjs

6
推荐指数
1
解决办法
312
查看次数

使用 axios.interceptors 获取新令牌

当令牌过期时,我想根据refresh_token 获取一个新令牌。我已经读到这可以通过axios.interceptors.

请检查是否:

  • 我是否正确配置了 axios.interceptors?
  • 我是否将它放在正确的位置,即在Items班级上方。
  • axios.interceptors.response分配给interceptor变量。我应该如何处理这个变量?

除了`axios.interceptors',我还需要一个新的令牌。令牌的有效期为 24 小时。

  • 我是否必须等待 24 小时才能测试它是否有效,或者是否有可能以不同的方式更快?
  • 我应该把“client_id”、“secret_id”、“grant_type”放在哪里?

代码在这里: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)

javascript oauth reactjs axios

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

错误:“找不到模块'react-search-input'的声明文件”

我正在尝试安装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)文件

javascript reactjs

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

扩展模式猫鼬中的继承方法“虚拟”不起作用

我在模型中有以下方法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. 如何设置teacherSchemavirtualfrom这样的继承方法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 mongoose mongodb node.js mongoose-schema

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