我想替换下面的代码,不再依赖_.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) 我正在开发一个琐事游戏,我正在使用反应导航来处理导航,我有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
我有一个超级冗余的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)
有什么更好的方法?
我们只是根据预感制作了这个代码,并且它有效.我很确定这是可以接受的.我只是想确定一下:
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
但是,它有效.
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还会返回相同的视图,但是没有消息。
我们正在更新API,Babel的Henry Zhu提醒我注意此预设,babel-preset-env以替换babel-preset-es2015and的需要babel-preset-es2018。
现在,我在理解最简单的方式来处理所有事情时遇到了困难。
如果我仅向您显示配置的当前位置,这将更加容易:
.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) 使用以下配置,一切都工作正常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) 我正在为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) 以下面的代码为例;它是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块中都是可见的,但仅在分配时才被初始化,只有在达到定义的情况下才会发生。
如果我没有记错内存泄漏的可能性,这是否意味着编译器将始终保持引用action.payload?-意味着如果进入一个大的循环,数据集或长时间运行的计算,可能会导致大量的内存消耗,即使这种情况只有在它匹配时才执行,因为它不能被垃圾收集或忽略,所以会导致大量的内存消耗?
首先,我的解释正确吗?
我的问题的本质是围绕什么{以及}在此执行上下文/词汇环境中所要保护的内容。仅仅是潜在的内存泄漏,还是我没有提到的话题?
javascript garbage-collection memory-leaks switch-statement eslint
我有这个简单的单元测试:
\nimport { 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});\nRun 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>\nRun 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) javascript ×4
node.js ×3
ecmascript-6 ×2
graphql ×2
babel ×1
babel-node ×1
buefy ×1
bulma ×1
eslint ×1
express ×1
jestjs ×1
jwt ×1
laravel ×1
lodash ×1
loops ×1
memory-leaks ×1
nuxt.js ×1
postcss ×1
react-native ×1
react-redux ×1
redirect ×1
resolver ×1
schema ×1
tailwind-css ×1
unit-testing ×1
view ×1
vitest ×1
vuejs3 ×1