我想将反应组件的共享功能移动到更高阶的组件,如下所示:
function withListFunctions(WrappedComponent) {
return class extends React.Component {
constructor(props) {
super(props);
}
// my shared functionality
deleteItem() {
// Do something, then ...
this.setState({itemDeleted: true});
}
render() {
return (
<WrappedComponent
deleteItem={this.deleteItem}
/>
);
}
}
Run Code Online (Sandbox Code Playgroud)
使用这种语法需要this在HOC的构造函数中明确地绑定:
this.deleteItem = this.deleteItem.bind(this);
Run Code Online (Sandbox Code Playgroud)
..但我想绑定包装的组件.所以我在包装组件的构造函数中尝试的是
this.props.deleteItem = this.props.deleteItem.bind(this);
Run Code Online (Sandbox Code Playgroud)
但这只会导致"无法分配给只读属性"错误,因为反应道具只是为了读取.
我知道我可以将状态项存储在HOC中并将其作为道具传递下去.但是,其他包装的组件功能将无法访问(可写),对吧?我想知道是否有一种方法可以共享未绑定的函数,然后将其绑定到包装的实例.
[编辑]我将Abdul Rauf的回答标记为"已接受",但我想说Karen Grigoryan的回答是我实际使用的解决方案,因为它的工作原理似乎只适合我的应用程序的复杂性.
我有一个 OR 表达式,它应该返回除以下内容之外的任何操作数NaN:
(1 || NaN) // evaluates to 1
(NaN || 1) // evaluates to 1
Run Code Online (Sandbox Code Playgroud)
但是当另一个操作数也是像0, null, undefinedor一样的假值时false,Javascript 总是返回最右边的操作数:
(0 || NaN) // evaluates to NaN
(NaN || 0) // evaluates to 0
// same for combinations of 0, null, undefined and false
Run Code Online (Sandbox Code Playgroud)
有没有办法将所需的行为“返回不是 的操作数NaN”放入一个漂亮而简短的表达式中,还是我必须依赖 if/else 构造?
我遇到了一个奇怪的Git行为:我有一个存储库,其中包含文件中指定的许多未跟踪文件和文件夹.gitignore.
我做的确切步骤:
git stashgit checkout <hash of first commit>git checkout <my working branch>git stash apply然后我注意到一些(不是全部)我未跟踪的文件和文件夹已经消失了.怎么可能?
附加信息:
被隐藏的文件与消失的文件无关,我注意到存储操作只是为了完整性
我没有执行其中一个命令,git stash --include-untracked或者git stash save -u像@Ashish Mathew猜测的那样
似乎只有文件和文件已经消失,但是在.gitignore第一次提交时还没有,但后来被添加到了它中