小编soo*_*sap的帖子

react-native的动画库的流类型

我试图在Flow旁边使用react-native的动画库.不幸的是,我得到了一堆我无法解决的Flow错误(参见截图).

在下面的示例中,我在屏幕上渲染一个圆圈,并希望在使用时渲染它Animated.spring.还有什么我需要添加来与Flow做出反应原生的工作吗?

Flow版本:0.54.0/react-native版本:0.48.0

目前,我只是忽略动画.flowconfig:(

; Ignore Animated
.*/react-native/Libraries/Animated/**/.*
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

animation flowtype react-native

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

TypeScript中的模块解析如何用于全局值(即描述)?

在单独使用jest时,安装后即可检测到相应的打字稿定义@types/jest

然后,我开始使用cypress进行集成测试。由于cypress使用的是mocha,因此我现在在我的jest测试中错误地看到了mocha类型定义的引用。实际上,检测到许多重叠的类型定义。例如,describe似乎在许多文件中定义了。我什至尝试实现自己的describe指向笑话的类型。不幸的是,摩卡咖啡每次都“获胜”。

当打字稿编译器检测到多个定义时,如何指定优先顺序?

多个打字稿定义用于描述

我的tsconfig.json样子是这样的:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "types": [ "jest", "mocha" ],
        "allowJs": true,
        "skipLibCheck": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "strictNullChecks": true,
        "forceConsistentCasingInFileNames": true,
        "module": "esnext",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "isolatedModules": false,
        "noEmit": true,
        "jsx": "preserve"
    },
    "include": [ "src/**/*" ]
}
Run Code Online (Sandbox Code Playgroud)

但是,我也尝试了以下方法:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "typeRoots": [ "./node_modules/@types", "./src/types" ],
        "allowJs": …
Run Code Online (Sandbox Code Playgroud)

mocha.js typescript jestjs cypress

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

使用FlowType处理枚举

export type Size =
| 'small'
| 'medium'
| 'large'
| 'big'
| 'huge';
Run Code Online (Sandbox Code Playgroud)

定义这样的Size类型让我在IDE中自动完成,无论我在哪里使用它:

在此输入图像描述

然而,我还想在组件内部使用这些值:让我们说一个带有可用大小值的下拉菜单.

为了实现这一点,我正在维护一个大小对象,我可以通过利用$ Keys来提取Size FlowType :

export const sizes = {
  small: 'small',
  medium: 'medium',
  large: 'large',
  big: 'big',
  huge: 'huge',
};

export type Size = $Keys<typeof sizes>;
Run Code Online (Sandbox Code Playgroud)

它有点工作,因为它指出了道具的无效值: 在此输入图像描述

然而,这个解决方案需要付出代价:它会破坏我所有的自动完成功能 ...... :(有没有更好的方法来处理FlowType中的Enums?

在此输入图像描述

enums flowtype

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

在Relay Modern中处理身份验证

我正在使用基于令牌的身份验证,并想知道如何在Relay Modern中将它完全绑定在一起.我已经过了一半.任何帮助深表感谢.这是我的设置:

  • 在里面的顶层<App />我渲染<QueryRenderer />入口点.
  • <LoginPage />组件内部,我有一个表单,在提交时触发LoginUserMutation.当我提供有效的用户名和密码组合时,我会收到一个令牌:
    • 我保存在该令牌的localStorage通过localStorage.setItem('token', token)
    • 然后我想将用户重定向到/dashboard路由history.push('/dashboard')
  • 在里面createRelayEnvironment.jsfetchQuery我定义了如何向GraphQL后端发出网络请求:
    • 在这里,我读到我是否有一个存储在localStorage中的令牌,即 const token = localStorage.getItem('token');
    • 如果令牌可用,我设置以下标题:{ ..., 'authorization': 'Bearer ${token}' }.然后后端能够验证用户.

Soooo goood到目前为止.不幸的是,有一个问题正在破坏图片.当令牌已经存储到localStorage后应用程序初始化时,此设置很有效.但不是这样,如果您当前未在localStorage中没有令牌条目的情况下进行身份验证.

如前所述,假设您在LoginUserMutation中,突变已成功,并且您在onComplete回调中获得了有效的令牌.现在该怎么办?是的我把它存放在里面localStorage.但是如果我将用户重定向到<Dashboard />组件,我就搞砸了.为什么? - 仪表板组件需要受限数据.当应用程序首次初始化时,虽然未提供受限数据,因为没有令牌被发送到GraphQL端点.然后,当令牌最终在LoginUserMutation中可用时,Relay实际上并没有对它做任何事情.

TL;博士

Q1 我如何 - 配备有效令牌 - <Dashboard />在我发送用户之前触发重新获取组件所需的数据/dashboard.

Q2 使用JSON Web令牌(JWT)时,是否有更好的方法来处理带Relay的身份验证?特别是,从在LoginUserMutationonComplete回调中收到有效令牌的那一步做什么?

authentication reactjs graphql relayjs

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

配置Webpack以在Laravel应用程序中工作

我想使用webpack-dev-server作为我的基本Laravel应用程序.从官方Webpack文档中我学到了以下内容:

您可能希望在开发中运行后端服务器或模拟它.您不应该使用webpack-dev-server作为后端.它的唯一目的是提供静态(webpacked)资产.

您可以并排运行两个服务器:webpack-dev-server和后端服务器.

在页面底部,他们举例说明如何实现这一目标.我跟进并遇到了两条错误消息.这是我尝试将Webpack集成到Laravel应用程序中.

webpack.config.js

var path = require("path");

module.exports = {
    context: path.resolve('resources'),
    entry: [
        './assets/js/app.js'
    ],
    output: {
        path: path.resolve('public/assets/'),
        publicPath: 'http://localhost:8080/assets/',
        filename: "bundle.js"
    },
    devServer: {
        contentBase: 'public',
        hot: true,
        proxy: {
            "*": "http://laravel.dev/"
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

app.blade.php

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Learning Laravel</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>

<body>
    <div class="container">
        @yield('content')
    </div>

    @yield('footer')
    <script src="http://localhost:8080/assets/bundle.js"/>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

vagrant@learning-laravel:~/learning-laravel$ webpack-dev-server --inline
Run Code Online (Sandbox Code Playgroud)

控制台输出:

http://localhost:8080/
webpack result is served from http://localhost:8080/assets/
content …
Run Code Online (Sandbox Code Playgroud)

laravel webpack webpack-dev-server

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

如何使用Kubernetes端口名称?

在kubernetes 部署中,我指定一个端口,如下所示:

 containers:
 - name: nginx
   image: nginx:latest
   ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP
Run Code Online (Sandbox Code Playgroud)

现在,在服务中,我可以像这样引用该端口(允许我仅在服务中指定外部端口):

spec:
  type: ClusterIP
  ports:
  - name: nginx-port
    port: 80
    targetPort: nginx-port
    protocol: TCP
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我可以使用以下语法在其他地方引用服务和端口nginx-service.default.svc.cluster.local:nginx-port吗?您知道我可以使用这些特殊名称来引用服务,但是我发现自己像这样对端口号进行了硬编码nginx-service.default.svc.cluster.local:80

kubernetes kubernetes-service

7
推荐指数
4
解决办法
6185
查看次数

Apollo GraphQL 请求被取消

我正在使用Downshift和构建一个 React type advance 文本字段组件react-apollo。当用户输入时,我正在查询输入建议并将其显示在文本字段下方。

typeahead-react-组件

不幸的是,这段经历并不顺利。由于某种原因,Apollo 时不时会取消 50% 以上的请求。

取消的请求

我还记录了由 HoC 封装的组件可以访问的响应数据graphql。在所需的情况下,加载状态设置为false并且我的words数据可用。在不希望的情况下,加载状态被设置为true并且没有words可用数据。无论是期望的还是不期望的请求,后端每次都会执行。

不良情况

不良情况

请注意 的网络状态1

所需案例

期望的情况

请注意 的网络状态7

为什么 apollo 取消这些请求?如何解决这个问题?

reactjs react-apollo apollo-client

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

如何从源代码安装纱线?

我正在尝试从源代码安装纱线包管理器到我的 Ubuntu 机器上。

1) 从Github Release页面下载 yarn tarball

YARN_VERSION=0.17.1
https://github.com/yarnpkg/yarn/releases/download/v${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz
Run Code Online (Sandbox Code Playgroud)

2) 解压压缩的 tar

tar -xzf yarn-v${YARN_VERSION}.tar.gz
Run Code Online (Sandbox Code Playgroud)

3)使用它

cd ./dist/bin/yarn --version
>> 0.17.10
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。

目标:但是,yarn通过 访问可执行文件的推荐方法是什么/usr/local/bin/yarn --version

看来我需要创建一个符号链接。在那种情况下,提取 tarball 的最佳位置在哪里?是/usr/local/lib/yarn吗?如何创建符号链接?

ubuntu github yarnpkg

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