小编Quo*_*ang的帖子

在没有文件的情况下将 JSON 字符串上传到 Google Cloud Storage

我的情况是当我从其他来源接收数据作为 JSON 字符串时,然后我想将此字符串上传到 Google Cloud Storage,而不将此字符串写入本地文件并上传此文件。有没有办法做到这一点。谢谢你。看起来像下面的这段代码

storage
  .bucket(bucketName)
  .upload(jsonString, { destination: 'folder/test.json' })
  .then(() => {
    console.log('success');
  })
  .catch((err) => {
    console.error('ERROR:', err);
  });
Run Code Online (Sandbox Code Playgroud)

所以我预计谷歌云存储会有一个文件 test.json 包含来自 jsonString 的内容

javascript storage json node.js google-cloud-storage

14
推荐指数
1
解决办法
8616
查看次数

当值相等时,React 钩子 useState setValue 仍然重新渲染一次

我有下面的示例代码:

function App() {
  console.log("render");
  const [val, setVal] = React.useState(0);
  return (
    <div className="App">
      <h1>{val}</h1>
      <button onClick={() => setVal(12)}>Update with same value</button>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

当我多次单击一个按钮时,控制台会记录 3 次并显示“渲染”消息。对我来说,它应该只有 2 次:

  • 1 用于第一次渲染

  • 2 用于从 val 0 到 12 的更新(单击按钮时)

从这一次开始,它不应重新渲染,因为相同的值 (12) 已更新为 val。

但是为什么会出现3次呢?这意味着尽管更新了相同的值,它仍然会重新渲染一次。

哪位知道的请解释一下,先谢谢了。

P/S:我发现它只会在值改变时导致额外的重新渲染,然后用相同的值更新

function App() {
  console.log("render");
  const [val, setVal] = useState(4);
  return (
    <div className="App">
      <h1>{val}</h1>
      <button onClick={() => {
        setVal(val => val + 1)
      }}>Update</button>
      <button onClick={() => {
        setVal(val => val)
      }}>Update with same …
Run Code Online (Sandbox Code Playgroud)

javascript frontend reactjs react-hooks

8
推荐指数
2
解决办法
8550
查看次数

Component中的store.getState或mapStateToProps

我有一个问题,即直接从商店使用getState或使用mapStateToProps有什么区别.请看下面的例子

import React, { Component } from 'react'
import store from '../store'
import { connect } from 'react-redux';

class Test extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <p>
        <h1>{this.props.count}</h1>
        <h2>{store.getState().reducer1.count}</h2>
      </p>
    )
  }
}

const mapStateToProps = (state) => ({
  count: state.reducer1.count
});

// export default Test;
export default connect(mapStateToProps)(Test);
Run Code Online (Sandbox Code Playgroud)

无论store.getStatemapStateToProps以上工作正常,但它仍然更新时的状态变化.如果我们只使用getState,我们不需要使用connect方法.

我已经认识到的另一点是当使用带有connect的mapStateToProps时,在reducer中我们必须返回一个对象状态的新副本,而不是通过修改返回该状态.如果不是,则状态更改时组件不会更新.像这样:

return Object.assign({}, state, {
        count: state.count + 1,
        payload: action.payload,
      });
Run Code Online (Sandbox Code Playgroud)

但是如果我们使用store.getState(),我们可以返回一个新副本或修改过的副本.像这样:

state.count++; …
Run Code Online (Sandbox Code Playgroud)

javascript frontend reactjs redux

7
推荐指数
1
解决办法
3621
查看次数

NodeJS 如何将 JS 文件导入 TypeScript

我是 TypeScript 的新手。我目前正在学习使用 Typescript 语言的 NodeJS Loopback 4框架。我的问题是如何将在 JS 文件中导出的一些函数、类导入到我的 TS 文件中。经过多种方式搜索后,它仍然对我不起作用。下面是例子:

  // /src/index.ts
    import {plus} from './lib/test';

    console.log(plus(1,2));
Run Code Online (Sandbox Code Playgroud)
// /src/lib/test.js
    export function plus(x, y) {
      return x + y;
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试使用这样的定义打字稿

// /src/lib/test.d.ts
export declare function plus(x: number, y: number): number;
Run Code Online (Sandbox Code Playgroud)

但是在 index.ts 文件中导入这个函数时仍然出错

错误:在 Function.Module._resolveFilename (module.js:543:15) 中找不到模块“./lib/test”

import node.js typescript loopbackjs

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

多次单击同一个反应路由器链接时强制重新安装组件

我有一个带有数据表的路由页面,在组件安装时获取数据。当我多次单击同一个 react-router-dom 链接(到上面的路由)时,似乎只有在路由更改时才卸载组件(要渲染不同的组件)。

我希望再次单击同一链接时强制重新安装组件以获取新数据。react-router-dom Link 或任何其他 Link 组件中是否有任何选项或任何技巧可以做到这一点?

我的示例代码在这里:https : //codesandbox.io/s/react-router-9wrkz

我希望多次单击“关于”链接时“关于”组件将重新安装

reactjs react-router react-router-v4 react-router-dom

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

Material-DataTable 禁用内置搜索

我正在使用 npm package material-datatable serverSide true 因为所有操作发生(搜索、排序、过滤...)将导致从服务器获取数据。

一切都很好,但内置搜索。我想禁用内置搜索功能,因为当表搜索事件触发时,它已经从服务器获取了搜索到的数据,并且表应该只显示它​​(我不想再次对此数据进行任何本地搜索)。但是经过一段时间的研究,我仍然找不到禁用内置搜索的方法。

有知道的请解释一下,谢谢。

datatable datatables reactjs material-ui

0
推荐指数
1
解决办法
2288
查看次数