小编Ste*_*ast的帖子

与Redux反应?"背景"问题怎么样?

我通常在Stack上发布代码相关的东西,但这更多的是关于社区的一般想法是什么的问题.

似乎有很多人主张使用Redux和React来管理数据/状态,但是在阅读和学习两者时,我遇到了一些看起来不太合适的东西.

终极版

在本页的底部:http://redux.js.org/docs/basics/UsageWithReact.html(传递商店)它建议使用React'Context'的"Magic".

一种选择是将其作为道具传递给每个容器组件.然而,它变得乏味,因为你必须通过表示组件连线存储,因为它们碰巧在组件树中深层渲染容器.

我们建议的选项是使用一个特殊的React Redux组件,该组件可以神奇地使商店可用于所有容器组件......

应对

在React Context页面(https://facebook.github.io/react/docs/context.html)上面有一个警告:

上下文是一种先进的实验性功能.API可能会在将来的版本中发生变化.

然后在底部:

正如在编写清晰代码时最好避免使用全局变量一样,在大多数情况下应避免使用上下文...

不要使用上下文通过组件传递模型数据.明确地通过树线处理数据更容易理解......

所以...

Redux建议使用React'Context'功能,而不是store通过'props' 将其传递给每个组件.虽然React建议相反.

此外,似乎Dan Abramov(Redux的创建者)现在为Facebook(React的创建者)工作,只是为了让我更加困惑.

  • 我正在读这一切吗?
  • 目前关于这个问题的一般共识是什么?

javascript reactjs redux

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

PHP array_column()不返回对象的假值

我确信这是预期的行为array_column():

class myObj {
    public $prop;
    public function __construct(int $prop) {
        $this->prop = $prop;
    }
}

$objects = [
    new myObj(7),
    new myObj(3),
    new myObj(8),
    new myObj(0),
    new myObj(2),
    new myObj(6)
];

echo '<pre>';
print_r(array_column($objects, 'prop'));
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

返回:

Array (
    [0] => 7
    [1] => 3
    [2] => 8
    [3] => 2
    [4] => 6
)
Run Code Online (Sandbox Code Playgroud)

0缺失.也许它在empty()内部使用..?

为什么它不会返回有价值的值,0并且false可以是正常的有效对象属性值,并且array_column()用于返回值..?

什么是最好的工作...?

php php-7

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

MSAL 验证令牌服务器端

我们正在将应用程序从“使用 Google 登录”移至“使用 Microsoft 登录”。它是一个 SPA,但查询 API 来获取数据。客户端全部使用 MSAL v2 (msal-browser.min.js) 运行,我们可以正常登录和退出。

当我们向服务器发送请求时,我们会发送 JWT ID 令牌。服务器是 NodeJS API。

我看不到任何具有“验证”方法的 Microsoft 服务器端 Node 库,我们可以使用该方法来验证来自客户端的 ID 令牌。

我们一直在查看@azure/msal-node@azure/msal-common,但看不到任何可以提供 ID 令牌的内容,以验证令牌是否有效以及用户是否已登录。

如果用户未登录,我们希望从 API 返回“未经授权”。

对于 Google,这很容易,我们google-auth-library这样使用:

const client = new OAuth2Client(googleClientId)
const ticket = await client.verifyIdToken({ idToken: googleIdToken, audience: googleClientId })
const payload = ticket.getPayload() // jwt payload
Run Code Online (Sandbox Code Playgroud)

我希望微软的同类产品很难找到,或者不是,我只是愚蠢地没有找到它。

是否有 Node 库提供了一种验证 MSAL ID 令牌的方法,该方法确认令牌有效并且用户已登录...?

javascript node.js azure-ad-msal

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

Webpack,less-loader - 意想不到的令牌 - 为什么?

我正在使用Webpack(在Windows环境中),我正在尝试使用less-loaderextract-text-webpack-plugin生成一个css文件.我有less,webpack-core而且webpack也是我的node_modules文件夹中.

在我的应用程序中我使用:

require('./index.less');
Run Code Online (Sandbox Code Playgroud)

我的Webpack配置:

const path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
    entry: [
        './app/index.jsx'
    ],
    output: {
        path: path.join(__dirname, '/public'),
        filename: "js/app.js"
    },
    module: {
        loaders: [{
            test: /\.(js|jsx)$/,
            include: path.join(__dirname, '/app'),
            exclude: path.join(__dirname, '/node_modules'),
            loader: 'babel-loader',
            query: {
                presets: ['es2015', 'react'],
                plugins: ["transform-object-rest-spread"]
            }
        },{
            test: /\.(css|less)$/,
            loader: ExtractTextPlugin.extract("css-loader", "less-loader")
        }]
    },
    plugins: [
        new ExtractTextPlugin('css/app.css')
    ]
};
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这应该意味着当Webpack遇到我的index.less文件时,它less-loader首先使用生成CSS,然后 …

javascript less webpack

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

JavaScript - 返回承诺和/或呼叫回调?

我经常在其他人的文档中看到类似的东西:

回调是可选的,如果省略则返回一个promise.

这就是我所拥有的:

export function doSomeAsync(options, callback) {

    const useCallback = (callback && typeof callback == 'function');

    const promise = new Promise((resolve, reject) => {

        // --- do async stuff here ---
        const check = (options.num === 1) ? true : false;
        setTimeout(() => {
            if (check) {
                finish(true, "Number is 1");
            } else {
                finish(false, new Error("Number is not 1"));
            }
        }, 1000);
        // ---------------------------

        function finish(ok, rtn) {
            if (useCallback) {
                if (ok) {
                    callback(null, rtn);
                } else …
Run Code Online (Sandbox Code Playgroud)

javascript callback promise

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

Jest Uncovered Lines - 我如何测试这些线..?

我正在使用Jest覆盖选项,我得到:

--------------------------|----------|----------|----------|----------|----------------|
File                      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
--------------------------|----------|----------|----------|----------|----------------|
progress-bar.js           |      100 |       75 |      100 |      100 |             17 |
--------------------------|----------|----------|----------|----------|----------------|
Run Code Online (Sandbox Code Playgroud)

所以我有17条未覆盖的线,但我不知道如何掩盖它们.

进步,bar.js

import ProgressBar from 'progress'
import isNumber from 'lodash/isNumber'
import config from '../../config/global'

function progressBar (total) {
  if (!isNumber(total)) throw new Error(`progressBar() 'total' arg is not a number.`)

  const barCfg = config.progressBar

  const tokens = `${barCfg.bar} ${barCfg.info}`

  const options = {
    width: barCfg.width,
    total: total …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs

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

查看Express JS响应标头?

如果我需要查看我使用的传入请求标头:req.headers.

我需要查看响应中所有标头的列表.

res.headersundefined.

我知道我可以设置响应头:res.header('', '').

如何查看响应标头..?

javascript express

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

ReactJS - React.Children.forEach - 我可以获取子组件名称吗?

我有一个包含许多子节点的React(15.5.4)组件,其中一些是HTML元素,另一些是其他React组件.

我正在使用服务器渲染,并且需要在服务器和客户端上执行相同的操作.客户端将使用React的生产版本.

我需要遍历子项并识别特定类型的React组件.所以我的第一个想法是迭代使用React.Children.forEach()并查找组件名称.

React.Children.forEach(this.props.children, child => {
  console.log('name =', child.name)
})
Run Code Online (Sandbox Code Playgroud)

这似乎child.namechild.displayName不存在.

现在,child.type存在,并且是一个字符串(对于HTML元素)"ul"或者是一个函数(对于React组件).

当它是一个函数时,我可以使用lodash/get这样const type = get(child, 'type.name', '')来获取组件名称.但是,这似乎只在服务器上工作,而不是在客户端生产构建中,它返回一个字符串:"t".看起来开发构建使用我的组件名称作为函数,但生成构建将其重命名为t().所以我不能用child.type.name.

我如何能:

  1. 迭代组件子组件并识别特定类型的组件..?
  2. 哪个适用于开发和生产React构建..?

javascript reactjs

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

带有和/或不带有类型的AWS DynamoDB数据?

我正在使用aws-sdkNodeJS与DynamoDB表进行交互。这是我第一次看DynamoDB。

当使用类似getItem()或的调用时updateItem(),数据结构包括如下类型:

{
  'a': { S: 'My string' }
}
Run Code Online (Sandbox Code Playgroud)

没有类型,有没有办法传递和接收这些对象?所以...

{
  'a': 'My string'
}
Run Code Online (Sandbox Code Playgroud)

或者,已经编写的任何帮助程序功能都可以将对象与该格式相互转换。

const data = dbToObj({ 'a': { S: 'My string' } })
// { 'a': 'My string' }
Run Code Online (Sandbox Code Playgroud)

因此,我可以在填充调用参数时转换为它,而在接收数据时将其转换为它。

尝试避免访问我的数据,例如:

const myData = data.Item.something.M.somethinElse.M.qwerty.S
Run Code Online (Sandbox Code Playgroud)

我知道我可以自己写点东西,只是想知道是否有人知道已经可用的功能/选项可以做到这一点。我找不到。

javascript amazon-web-services node.js amazon-dynamodb

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

Atom 编辑器 - 快速评论带有星号的块?

我正在使用 Atom 1.14.2。

例如,如果我有一个 JavaScript 对象文字:

{
  test: 123
}
Run Code Online (Sandbox Code Playgroud)

有没有一种快速的方法可以将其变成这种特定风格的多行注释:

/**
 * {
 *   test: 123
 * }
 */
Run Code Online (Sandbox Code Playgroud)

...或者至少快速添加星号

 * {
 *   test: 123
 * }
Run Code Online (Sandbox Code Playgroud)

..?

所以,我想在所有选定的行之前添加*(空格-星号-空格)。

我已经安装了docblockr,这很好,但我看不到执行上述操作的快速方法。

javascript comments atom-editor

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