我通常在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的创建者)工作,只是为了让我更加困惑.
让我们说我有一节课:
module MyModule {
export class MyClass {
x:number;
y:number;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个字符串,"x".如何检查MyClass是否具有属性"x"?
如果我创建一个MyClass实例然后执行:
myClassInstance.hasOwnProperty("x");
Run Code Online (Sandbox Code Playgroud)
它返回false,除非x设置了默认值.但我不想为每个属性设置默认值.如果我甚至可以在不创建MyClass实例的情况下做到这一点,那将是最好的.
如何从Angular 4项目的github中排除环境文件。
我已经将.gitignore更新为以下内容,但是我的环境文件仍在同步到github:/ src / environments / **
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# dependencies
/node_modules
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
testem.log
/typings
/src/environments/**
# e2e
/e2e/*.js
/e2e/*.map
# System Files
.DS_Store
Thumbs.db
Run Code Online (Sandbox Code Playgroud) 我正在开发一个非常模块化的Angular项目 - 可以使用Webpack为不同的客户启用和禁用应用程序的各个部分.到目前为止,这个结构对我来说很有效,但我遇到的一个问题是如何处理可能并不总是存在的服务.
我目前的解决方案非常简单 - 我$injector.has()
用来检查服务当前是否存在,如果是,我用$injector.get()
它来抓住它:
function initialize($injector) {
if ($injector.has("barcode")) {
let barcode = $injector.get("barcode");
// Do stuff with the barcode service
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效 - 但是,我找不到关于这种模式的使用的信息,以及它是否有任何潜在的缺点.
所以,我的问题是:
在我升级到webpack beta 23后,我开始在运行webpack时遇到与extension属性有关的错误:
我的扩展名是:扩展名:['','.ts','.js'],
如果我删除空白扩展选项,配置错误就会消失,但现在我的模块都没有加载,因为它们都是在没有扩展名的情况下加载的.我是否应该在这个新版本中指定空白扩展名?
我想我找到了正确的配置
我不确定这是否正确但经过一系列试验后我尝试使用*符号而不是空字符串.这似乎解决了这个问题.所以扩展属性的最终语法:
扩展:['*','js','ts']
希望这是实现它的预期方式
我有一个使用 reactstrap 的导航栏,并希望合并 react-router。在尝试失败后,我在这里找到了解决方案。
但是我不明白语法:
我有一个<NavLink>
来自 React-Router 和一个来自 Reactstrap 的导航栏。
而不是将 Reactstrap 包装在 React-Router 中(这会引发警告):
<NavLink to="/">
<NavbarBrand className="mx-auto" to="/" tag={ NavLink }>
My Site
</NavbarBrand>
</NavLink>
Run Code Online (Sandbox Code Playgroud)
这是语法:
<NavbarBrand className="mx-auto" to="/" tag={ NavLink }>
My Site
</NavbarBrand>
Run Code Online (Sandbox Code Playgroud)
什么是标签属性?它有什么作用?
谢谢大家!
我有一个包含2个对象的数组(myObject1和myObject2一样)。现在,当我添加第三个对象时,我将检查时间范围是否重叠。实际上,我不知道如何以一种高效的方式做到这一点。
var myObjectArray = [];
var myObject1 = {};
myObject1.startTime = '08:00';
myObject1.endTime = '12:30';
...
var myObject2 = {};
myObject2.startTime = '11:20';
myObject2.endTime = '18:30';
...
myObjectArray.push(myObject1);
myObjectArray.push(myObject2);
Run Code Online (Sandbox Code Playgroud) 我不明白为什么useClick中会出现无限循环, 我看到我使用setVal更改了useEffect中的状态值,但useEffect应该仅在第二个参数中指定的onClick上起作用。我认为这是因为我传递的参数onClick被记录下来,但未调用回调(我使用console.log('go set'检查过)
function useClick(onClick, setVal, val) {
React.useEffect(() => {
console.log('Click');
setVal(val + 1);
}, [onClick]);
}
const Home = () => {
const [val, setVal] = React.useState(0);
const incrementOnClick = React.useCallback(() => {
console.log('go set');
setVal(val + 1);
} , [setVal, val]);
useClick(incrementOnClick, setVal, val);
return <div>
<div>{val}</div>
<button onClick={incrementOnClick}>Click me</button>
</div>
}
Run Code Online (Sandbox Code Playgroud) 这process.hrtime()
是一个遗留版本的process.hrtime.bigint()
方法
process.hrtime(); // -> [27511, 516453000] (seconds, remaining nanoseconds)
process.hrtime.bigint(); // -> 27511516453000n (nanoseconds)
Run Code Online (Sandbox Code Playgroud)
27511516453000 纳秒是 7.6420879036111113 小时
当我测试时,时间是 11:54 UTC 和 14:54 Locale Time
我正在使用trello.com来管理我的工作板(类似于 Scrum 的看板),我真的很想知道,当其他人更改此板时,Trello 如何实时重新加载我的板,他们使用了什么技术?
这意味着,当我在两个浏览器上打开我的开发板时。在第一个浏览器上自动更改某些内容,第二个浏览器会重新加载,非常快,更改会显示出来!
有人可以告诉我他们是怎么做到的:D
非常感谢!
出于某种奇怪的原因获取此错误
TypeError:webpack.CommonsChunkPlugin不是构造函数
其他插件对我来说很好:
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
// create global variables accessible on server and client
new webpack.DefinePlugin({
Run Code Online (Sandbox Code Playgroud) javascript ×5
reactjs ×4
node.js ×2
webpack ×2
angular ×1
angular-cli ×1
angularjs ×1
babeljs ×1
debugging ×1
git ×1
github ×1
html ×1
react-hooks ×1
reactstrap ×1
redux ×1
trello ×1
typescript ×1