我需要能够跟踪组件的实例数量,如何在 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 不应该改变。
我有一个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
我错过了什么?
是否可以使用 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) 当我尝试执行一些合法的事情时 - 它有效,就像
$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 克隆存储库”,而是“如果出现问题如何检索错误消息”,在我的示例中,“损坏的”存储库链接无关紧要。
在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
.但我想知道有更优雅的方式吗?
javascript ×2
automation ×1
bash ×1
console ×1
git ×1
gruntjs ×1
linux ×1
node.js ×1
nodemon ×1
npm ×1
orm ×1
php ×1
react-hooks ×1
reactjs ×1
scripting ×1
shell ×1
typeorm ×1
typescript ×1