小编Rya*_*Sam的帖子

React useEffect 导致:无法对未安装的组件执行 React 状态更新

获取数据时,我得到:无法对未安装的组件执行 React 状态更新。该应用程序仍然有效,但反应表明我可能导致内存泄漏。

这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。”

为什么我不断收到此警告?

我尝试研究这些解决方案:

https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal

https://developer.mozilla.org/en-US/docs/Web/API/AbortController

但这仍然给了我警告。

const  ArtistProfile = props => {
  const [artistData, setArtistData] = useState(null)
  const token = props.spotifyAPI.user_token

  const fetchData = () => {
    const id = window.location.pathname.split("/").pop()
    console.log(id)
    props.spotifyAPI.getArtistProfile(id, ["album"], "US", 10)
    .then(data => {setArtistData(data)})
  }
  useEffect(() => {
    fetchData()
    return () => { props.spotifyAPI.cancelRequest() }
  }, [])
  
  return (
    <ArtistProfileContainer>
      <AlbumContainer>
        {artistData ? artistData.artistAlbums.items.map(album => {
          return (
            <AlbumTag
              image={album.images[0].url}
              name={album.name}
              artists={album.artists}
              key={album.id}
            />
          )
        })
        : null}
      </AlbumContainer>
    </ArtistProfileContainer> …
Run Code Online (Sandbox Code Playgroud)

javascript fetch reactjs react-hooks

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

TypeError:Object(...)不是函数reactjs

我试图通过fillCalendar()从组件的方法中提取到它自己的js文件并导入它来清理这个反应组件.最初this.state.datesArray是在componentWillMount()生命周期方法中设置的.现在我正在尝试在构造函数中直接初始化它,因为这是react文档推荐的内容.这样做现在抛出"TypeError:Object(...)不是函数"错误,我不知道为什么.以下是Calendar.js 在这里看到的内容.

Calendar.js

import React, { Component } from 'react';
import { fillCalendar } from '../calendar.tools'

class Calendar extends Component {
  constructor(props) {
    super(props)
    this.state = {
      datesArray: fillCalendar(7, 2018),
      date: new Date(),
      monthIsOffset: false,
      monthOffset: new Date().getMonth(),
      yearOffset: new Date().getFullYear()
    }
  }
  render() {
    return (
      ...
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

calendar.tools.js

let fillCalendar = (month, year) => {
  let datesArray = []
  let monthStart = new Date(year,month,1).getDay()
  let yearType = false;
  let filledNodes = …
Run Code Online (Sandbox Code Playgroud)

javascript import reactjs

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

反应setState回调没有更新的状态

如果monthOffset = 12条件将评估为true,并将yearOffset状态更新为2017 yearOffset = 2018。根据我读过的react docs和其他答案,this.setState状态更新后,回调函数会触发,但console.log()仍会输出2018。我尝试了几种其他方法,根据其他相关问题的答案来实现此代码问题,但我的没有用。我不知道为什么。

handleClick(e) {
  const { monthOffset, yearOffset } = this.state
  this.setState({ monthOffset: monthOffset - 1 })
  if ( monthOffset - 1 === 11 ) { this.setState((prevState) => { 
    return { yearOffset: prevState.yearOffset - 1 } },
    () => {console.log("yearOffset", yearOffset)}
  )}
  console.log("clicked")
}
Run Code Online (Sandbox Code Playgroud)

javascript setstate reactjs

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

如何使用 jwt golang 包通过 ECDSA 方法签署 JWT - 使用 Apple 登录

当集成 Sign in with Apple 时,您会在您的 Apple 开发者帐户中生成一个密钥。
这是一个名为AuthKey_3JMD5K6.p8和看起来像的文件

-----BEGIN PRIVATE KEY-----
MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf
asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregR
LKJIOEWFNLasdflkawefjoiasdflk
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

所以我做了一个var appleKey := MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregRLKJIOEWFNLasdflkawefjoiasdflk

我之前已经使用 HMAC-SHA 方法对 jwt 进行了签名,这相当简单,但我不知道如何使用 ECDSA 方法对 jwt 进行签名。

我以与 HMAC-SHA 方法相同的方式编写代码,但出现错误key is of invalid type

那么使用 golang 的 jwt 库如何使用 ECDSA 方法签署我的 jwt ?

我的代码

-----BEGIN PRIVATE KEY-----
MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf
asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregR
LKJIOEWFNLasdflkawefjoiasdflk
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我现在知道这不是你的做法,而且比这更复杂一些,但是该怎么做呢?

我发现这篇文章告诉您如何手动执行此操作:
http://p.agnihotry.com/post/validating_sign_in_with_apple_authorization_code/

但我已经将 golang 的 jwt 库用于令牌的其他部分: https:
//godoc.org/github.com/dgrijalva/jwt-go

go jwt ecdsa

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

未定义符号:_swift_getOpaqueTypeConformance - React Native 和 SwiftUI

我正在尝试按照本指南将 SwiftUI 视图移植到本机反应中。它在 swift 项目中构建良好,但在 React Native 项目中构建良好。

我收到以下错误:

Undefined symbols for architecture x86_64:
  "_swift_getOpaqueTypeConformance", referenced from:
      lava.ColorWheelView.body.getter : some in ColorWheelView.o
      closure #2 (SwiftUI.GeometryProxy) -> <<opaque return type of lava.ColorWheelView.makeView(SwiftUI.GeometryProxy) -> some>>.0 in lava.ColorWheelView.body.getter : some in ColorWheelView.o
      associated type witness table accessor for SwiftUI.View.Body : SwiftUI.View in lava.ColorWheelView : SwiftUI.View in lava in ColorWheelView.o
      l_get_witness_table qd0__7SwiftUI4ViewHD3_AaBPAAE7gesture_9includingQrqd___AA11GestureMaskVtAA0F0Rd__lFQOyAA15ModifiedContentVyAA6ZStackVyAA05TupleC0VyAJyAA06_ShapeC0VyAA9RectangleVAA5ColorVGAA12_FrameLayoutVG_AJy4lava010GuitarPickC0VAA13_OffsetEffectVGtGGAA09_PositionP0VG_AA06_EndedF0VyAA0f5StateF0VyAA08_ChangedF0VyAA04DragF0VGSo7CGPointVSgGGQo_HO in ColorWheelView.o
      associated type witness table accessor for SwiftUI.View.Body : SwiftUI.View in lava.TrianglePath : SwiftUI.View in lava in GuitarPickView.o
      associated …
Run Code Online (Sandbox Code Playgroud)

objective-c react-native swiftui

6
推荐指数
0
解决办法
1218
查看次数

我应该如何将 Postgres 日期类型分配给变量

我将过期日期插入到具有以下架构的 Postgres 列中:
exp DATE NOT NULL

我在 Golang 中创建这些日期的方式是使用使用Time数据类型的“时间”库(不确定它的基础类型是否是字符串,go 文档没有真正指定请参阅此处)。

这是我如何使用pgx库 进行插入

expirationDate := time.Unix(expiresAt, 0)
sql := `
  insert into items 
  (sub, uuid, exp) 
  VALUES ($1, $2, $3)
`
_, err := connection.Exec(
  context.Background(),
  sql,
  subject,
  id,
  expirationDate,
)
Run Code Online (Sandbox Code Playgroud)

我的代码中的其他地方expiresAt是这样的:

days := 1 * 24 * time.Hour
expirationTime := time.Now().Add(days)
expirationTime.Unix() // this is what's being passed in my function (expiresAt int64) that does the DB insertion
Run Code Online (Sandbox Code Playgroud)

问题是试图从 Postgres 中取回该日期。
当我在 …

postgresql go

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

为什么类型char返回不同的值?

如果最大值char可以保持为255,那么如果我创建一个类型的变量char number并将其设置为等于= 255;那么std::cout << number;程序如何返回\377呢?

c++

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

Swift 合并 HTTP 请求

试图弄清楚如何使用组合快速发出 http 请求。我主要是在看Apple 的这个文档。我没有取得任何进展,而且看起来很简单,所以我不知道我做错了什么。

我习惯使用 JavaScript 并使用Fetch API
也使用Golang 中的http pkg
但出于某种原因,在 Swift 中这样做对我来说真的很困惑,因为它不像我提到的两个那样精简

我将 SwiftUI 与 MVVM 架构一起使用,所以我的目标是在我的视图模型中实现一种与 Golang 服务器通信的方式。

这就要求大多POST与请求AcceptAuthorization头部和JSON身体

我试过这个代码:

let url = URL(string: "https://api.example.com/user/login")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue(String(format: "Bearer %s", idToken!), forHTTPHeaderField: "Authorization")
        
_ = URLSession.shared.dataTaskPublisher(for: request)
    .tryMap() { element -> Data in
        // not worried about the status code just trying to get any response. …
Run Code Online (Sandbox Code Playgroud)

http ios swift combine

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