小编Smx*_*Cde的帖子

React 功能组件 - 如何计算实例数?

我需要能够跟踪组件的实例数量,如何在 React 中使用功能组件来做到这一点?

我尝试使用useRef(),但似乎即使它保留了渲染之间的值 - 它也不共享组件实例之间的值。

到目前为止,我想出的唯一解决方案就是这个愚蠢的解决方案,我希望有一种方法可以以更优雅的方式存储它。

const [ ident, setIdent ] = useState(0);

useEffect(() => {
  if (document.sometring === undefined) {
    document.sometring = 0;
  } else {
    document.sometring++;
  }
  setIdent(document.sometring);
}, []);
Run Code Online (Sandbox Code Playgroud)

更新问题: 用例更具实践性,我想知道如何做到这一点,而不是实用性。我希望独立组件的每个实例都有唯一的顺序 ID(如“button-42”),因此这就是为什么“给它一个随机代码”之类的解决方案也不适合我。像 redux 或 context 这样的全局状态管理器也不能成为解决方案,因为,比方说,如果我在 GitHub 上开源我的组件,我不应该要求用户也安装 redux 或使用 React.Context。当然,如果组件重新渲染,这个 ID 不应该改变。

javascript reactjs react-hooks

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

从主机编辑文件时,VM 中的 Nodemon 看不到更改

我有一个node在虚拟机(Virtualbox、Vagrant、Ubuntu)中运行的应用程序,nodemon用于开发目的。

文件位于vagrant的共享文件夹中。

当我在虚拟机中更改应用程序 js 文件时 - nodemon 重新启动节点应用程序。但是当我从主机(Max OS X Yosemite)更改相同的文件时 - 应用程序不会重新启动。

在主机是 Windows 10 的类似情况下 - 它工作正常。

我通过Grunt配置启动 nodemon

module.exports = function (grunt) {

    var cfg = {

        pkg: grunt.file.readJSON('package.json'),

        nodemon: {
            dev: {
                script: 'src/server.js'
            },
            options: {
                nodeArgs: ['--harmony'],
                ext: 'js,json,hbs',
                ignore: [
                    'public/**',
                    'node_modules/**',
                    '.git/**'
                ]
            }
        }
    };

    grunt.initConfig(cfg);

    grunt.loadNpmTasks('grunt-nodemon');

    grunt.registerTask('default', ['nodemon']);

};
Run Code Online (Sandbox Code Playgroud)

或者直接 nodemon ./src/server.js localhost 3000

我错过了什么?

javascript node.js npm gruntjs nodemon

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

是否可以使用 TypeOrm 从对象设置字段值?

是否可以使用 TypeOrm 保留类型安全性来设置对象的字段值?

我在文档中找到的所有示例都建议您一一设置属性

const newUser = new User();
newUser.firstName = 'John'
newUser.lastName = 'Doe'
newUser.role = 'manager'
newUser.phone = '1234567890'
newUser.login = 'john.doe'
newUser.password = '12345'
newUser.save();
Run Code Online (Sandbox Code Playgroud)

如果我可以这样设置字段,那就更好了:

const newUser = new User();
newUser.setFields({
        firstName: 'John',
        lastName: 'Doe',
        role: 'manager',
        phone: '1234567890',
        login: 'john.doe',
        password: '12345'
    }
);
newUser.save();
Run Code Online (Sandbox Code Playgroud)

它将允许使用快捷方式

const newUser = new User();
newUser.setFields({
        firstName,
        lastName,
        role,
        phone,
        login: 'john.doe',
        password: '12345'
    }
);
newUser.save();
Run Code Online (Sandbox Code Playgroud)

并使用组合

const newUser = new User();
newUser.setFields({
        firstName,
        lastName,
        role,
        phone,
        ...credentials …
Run Code Online (Sandbox Code Playgroud)

orm typescript typeorm

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

从 PHP 执行 GIT 命令并返回错误消息

当我尝试执行一些合法的事情时 - 它有效,就像

$result = `git tag`
Run Code Online (Sandbox Code Playgroud)

返回给我可用标签的列表。

但是当我做一些应该返回错误的事情时,比如

$result = `git clone https://`
Run Code Online (Sandbox Code Playgroud)

它返回我NULL,但不是fatal: could not create work tree dir ''.: No such file or directory我在控制台中看到的消息。

如何运行命令并从 PHP 获取错误消息?

UPD:这不是问题“如何使用 PHP 克隆存储库”,而是“如果出现问题如何检索错误消息”,在我的示例中,“损坏的”存储库链接无关紧要。

php linux git console

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

运行命令集并返回错误代码(如果有任何失败)

在nodejs项目中,我有一个yarn lint以这种方式运行几个短接的快捷方式:

lint_1 && lint_2 && lint_3
Run Code Online (Sandbox Code Playgroud)

如果其中任何一个发现错误,则返回错误代码,因此结果yarn lint本身会返回错误代码,因此构建失败.

虽然存在一个小问题,但它可以正常工作,捕获所有错误:如果一个linter失败并显示错误代码 - 其余的linters将不会被执行.

我想要的 - 执行所有这些(所以他们都打印所有错误),然后才失败.

我知道我可以创建一个bash脚本(我将运行yarn lint),逐个运行每个linters收集返回码,然后检查是否有任何代码非零 - exit 1并且它将失败yarn lint.但我想知道有更优雅的方式吗?

bash shell scripting continuous-integration automation

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