小编agm*_*984的帖子

用香草 for 循环替换下划线或 lodash _.each

我想替换下面的代码,不再依赖_.each()underscore.js或lodash.js的功能:

function fset(data) {
    _.each(dataDefault, function(item, key) {
        var val = ( data[key] ? data[key] : dataDefault[key] );
        $rootScope.meta[key] = val;
    });
};
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想使用 vanilla JavaScript for 循环,但我不明白_.each()underscore/lodash 中的函数如何替换它......

就像是:

for(var i=0; i<data.length;i++) {
    var val = ( data[key] ? data[key] : dataDefault[key] );
    $rootScope.meta[key] = val;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何以这种方式获得钥匙和物品......

dataDefault 好像:

var dataDefault = {
    title: null,
    description: null
};
Run Code Online (Sandbox Code Playgroud)

调用函数的一个例子是:

meta.fset({
    title: 'Hello world',
    description: 'DESC'
});
Run Code Online (Sandbox Code Playgroud)

javascript loops underscore.js ecmascript-6 lodash

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

如何阻止Android硬件后退按钮在react-native的react-navigation中运行?

我正在开发一个琐事游戏,我正在使用反应导航来处理导航,我有3个组件,(新游戏,问题,结果)我不希望用户回到结果页面的问题,如果没有.问题已经用尽,然而,按下后退按钮(Android硬件)正在将他带回问题.然后,我尝试处理硬件后退按钮,如下所示:

componentWillMount() {
      this.props.gameState(true);
      BackHandler.addEventListener('hardwareBackPress', () => {
        if (this.props.gamePlaying) { // Currently set to true. I will set it to false again on NewGame Page.
          this.props.navigation.navigate('NewGame');
        }
      });
    }
Run Code Online (Sandbox Code Playgroud)

但是,这会将用户带到NewGame屏幕,但是立即回弹到结果页面,因为它在NewGame页面中立即触发NAVIGATION/BACK.这又将其带回结果页面.

可能的修复?

我想在登陆NewGame组件页面后停止后退按钮.有办法吗?

我的环境

react-navigation = ^ 1.0.0-beta.11 react-native = 0.44.0

javascript react-native react-redux react-native-android react-navigation

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

使用Express JS检查API请求授权的更好方法

我有一个超级冗余的server.js文件,因为几乎所有属于REST API的方法都以这种方式启动,因为我必须检查API请求,以确保客户端是否有权要求特定的东西。

var jwt = require('jsonwebtoken');

// ...

app.get('/getsomething', function(req, res) {
  "use strict";
  var token = req.headers[tokenName];
  if (token) {
    jwt.verify(token, app.get('some_secret'), {
      ignoreExpiration: false
    }, function(err, decoded) {
      if (err || typeof decoded === "undefined") {
        res.json({
          status: 401,
          message: "unauthorized"
        });
      }
      else { // actual code starts here...
Run Code Online (Sandbox Code Playgroud)

有什么更好的方法?

restful-authentication node.js express jwt graphql

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

如何从数组中解析键(ES6)

我们只是根据预感制作了这个代码,并且它有效.我很确定这是可以接受的.我只是想确定一下:

const state = { inProgress: true }
const actions = 'COMPLETE_RICE'
const change = { inProgress: false, rice: 'cooked' }

// Is this destructuring OK?
const {
  0: newState,
  1: newActions,
  2: newChange,
} = [state, actions, change]

console.log('New State:', newState)
console.log('New Actions:', newActions)
console.log('New Change:', newChange)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

有任何疑虑或违规吗?

我找不到任何这方面的例子,只是尝试过,因为我记得:

['one', 'two', 'three'] 可以表示为一个对象:

{
  0: 'one',
  1: 'two',
  2: 'three'
}
Run Code Online (Sandbox Code Playgroud)

这里没有详细列出:https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

但是,它有效.

javascript ecmascript-6

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

重定向以查看但更改Laravel中的URL

create wizard完成后,我正在尝试将用户重定向回主页。

如果我在控制器中编写return view('main')->with('key'=>'data'),一切都很好,但是URL不会更改为,localhost:8080而是保持为'localhost:8080 / wizard / finish`。

如果我使用redirect('/')->with(['message' => 'Done.'])它重定向到主页,但是因为已经有一个Route::get('/','Controller'),控制器被触发,它返回我的默认主页,没有消息。

 <div class="row">
            <div class="col-12">
                @if (isset($message))
                    <p align="center" style="color: red;"><strong>{{$message}}</strong></p>
                @endif
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

编辑:在MainPageController(映射到/)中有一个断点,我看到当重定向到/路由时会触发此控制器。因此,我失去了$message,因为MainPageController还会返回相同的视图,但是没有消息。

redirect view laravel

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

如何在Jest中使用babel-preset-env

我们正在更新API,Babel的Henry Zhu提醒我注意此预设,babel-preset-env以替换babel-preset-es2015and的需要babel-preset-es2018

现在,我在理解最简单的方式来处理所有事情时遇到了困难。

  • 我们的API使用节点v8.x和async / await,本机承诺
  • 我要传播算子
  • 我要管道操作员
  • 我想要导入/导出语法
  • 我想支持杰斯特
  • 我喜欢babel-node如何将API转换到内存中

如果我仅向您显示配置的当前位置,这将更加容易:

.babelrc

 {
   "presets": [
     "env",
       {
         "targets": {
           "node": "current"
         }
       },
     "jest"
   ]
 }
Run Code Online (Sandbox Code Playgroud)

package.json

 {
   "scripts": {
     "test": "node --harmony-async-await node_modules/jest/bin/jest.js",
     "start:local": "NODE_ENV=localhost npm run babel-node -- warpcore/server.js",
     "start": "npm run babel-node -- warpcore/server.js",
     "babel-node": "babel-node --presets=es2015,stage-2"
   },
   "dependencies": {
     "babel-polyfill": "^6.23.0"
   },
   "devDependencies": {
     "babel-cli": "^6.24.1",
     "babel-core": "^6.25.0",
     "babel-eslint": "^7.2.3",
     "babel-jest": "^20.0.3",
     "babel-preset-env": "^1.6.0",
     "babel-preset-es2015": "^6.24.1",
     "babel-preset-es2018": "^1.0.0",
     "babel-preset-stage-2": …
Run Code Online (Sandbox Code Playgroud)

babel node.js jestjs babel-node

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

由于使用 Bulma 和 Buefy (nuxt-buefy) 时 PostCSS 出现问题,无法构建 Nuxt

使用以下配置,一切都工作正常npm run dev,但是当我们这样做时npm run build,出现了错误:

./assets/scss/main.scss 中的错误(./node_modules/@nuxt/postcss8/node_modules/css-loader/dist/cjs.js?ref--7-oneOf-1-1!./node_modules/@ nuxt/postcss8/node_modules/postcss-loader/dist/cjs.js??ref--7-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--7-oneOf- 1-3!./assets/scss/main.scss)模块构建失败(来自./node_modules/@nuxt/postcss8/node_modules/postcss-loader/dist/cjs.js):ParserError:第1行语法错误,第23栏

nuxt.config.js

export default {
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: 'app-name',
    htmlAttrs: {
      lang: 'en'
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
      { rel: 'stylesheet', type: 'text/css', href: 'https://unpkg.com/open-sans-all/css/open-sans.min.css' },
    ]
  },

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
    '@/assets/scss/main.scss', …
Run Code Online (Sandbox Code Playgroud)

postcss bulma nuxt.js tailwind-css buefy

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

合并Apollo Server的GraphQL解析器不能与Object.assign()一起使用

我正在为GraphQL API模块化我的架构,并尝试在不使用任何第三方库的情况下合并解析器。

有没有简单的方法可以做到这一点Lodash.merge()

Apollo文档说要使用Lodash之类的库来merge()模块化解析器。(http://dev.apollodata.com/tools/graphql-tools/generate-schema.html#modularizing

问题似乎在于,从本质上讲,解析器包含作为属性的函数,因此当我通过Object.assign()或什至访问解析器时,它们似乎被省略了JSON.stringify()

如果我console.log他们,我看到: {"Query":{},"Mutation":{}}

以下是解析器之一的外观:

 const productResolvers = {
   Query: {
     myProducts: (root, { userId }, context) => {
       return [
         { id: 1, amount: 100, expiry: '12625383984343', created: '12625383984343' },
         { id: 2, amount: 200, expiry: '12561351347311', created: '12625383984343' },
         { id: 3, amount: 200, expiry: '11346347378333', created: '12625383984343' },
         { id: 4, amount: 350, expiry: '23456234523453', created: '12625383984343' },
       ];
     },
   },
   Mutation: {
     addProduct: …
Run Code Online (Sandbox Code Playgroud)

schema resolver node.js graphql apollo-server

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

如果不在开关盒内声明块作用域,是否会导致内存泄漏?(ESLint无大小写声明)

以下面的代码为例;它是Redux的reducer功能:

export default (state = initialState, action) => {
    switch (action.type) {
        case EMPLOYEE_UPDATE: {                                           // <-- this {
            // action.payload === { prop: 'name', value: 'Jane' }
            const { prop, value } = action.payload
            return { ...state, [prop]: value }
        }                                                                 // <-- and this }

        default:
            return state
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是在尝试对action.payload进行重组以最大程度地减少重复,并且我发现它加剧了ES Lint规则(无大小写声明)。通常,我可能会在确认规则后将其关闭。由于ES Lint的定义,这一点似乎更为严重:

...原因是词法声明在整个switch块中都是可见的,但仅在分配时才被初始化,只有在达到定义的情况下才会发生。

资料来源:https : //eslint.org/docs/rules/no-case-declarations

如果我没有记错内存泄漏的可能性,这是否意味着编译器将始终保持引用action.payload?-意味着如果进入一个大的循环,数据集或长时间运行的计算,可能会导致大量的内存消耗,即使这种情况只有在它匹配时才执行,因为它不能被垃圾收集或忽略,所以会导致大量的内存消耗?

首先,我的解释正确吗?

我的问题的本质是围绕什么{以及}在此执行上下文/词汇环境中所要保护的内容。仅仅是潜在的内存泄漏,还是我没有提到的话题?

javascript garbage-collection memory-leaks switch-statement eslint

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

如何在 vitest、vue/test-utils vue3 中对 vueuse/head 进行单元测试

我有这个简单的单元测试:

\n
import { describe, it, expect } from 'vitest';\nimport { mount } from '@vue/test-utils';\nimport Login from './Login.vue';\n\ndescribe('Login.spec.js', () => {\n    it('mounts correctly', () => {\n        const wrapper = mount(Login, {});\n        expect(wrapper.isVisible()).toBe(true);\n    });\n});\n
Run Code Online (Sandbox Code Playgroud)\n

但我的 Login.vue 组件有:

\n
<script setup>\nimport { useHead } from '@vueuse/head';\n\n...\n\nuseHead({\n    title: 'Login',\n});\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n

单元测试抛出错误:

\n
[Vue warn]: injection "usehead" not found. \n  at <Login ref="VTU_COMPONENT" > \n  at <VTUROOT>\n[Vue warn]: Unhandled error during execution of setup function \n  at <Login ref="VTU_COMPONENT" > \n  at <VTUROOT>\n …
Run Code Online (Sandbox Code Playgroud)

unit-testing vue-test-utils vuejs3 vitest

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