我总是打开 this 的包装,以便渲染功能看起来更简洁。这样做是不好的做法吗?
示例:
class Zoom extends React.Component {
// ...
render() {
const {view, zoomOutScreen} = this;
const {navigation} = this.props;
return (
<Wrapper
innerRef={view}
animation='zoomIn'
duration={200}
useNativeDriver={true}
>
<Component
navigation={navigation}
zoomOutScreen={zoomOutScreen}
/>
</Wrapper>
);
}
}
答案 0 :(得分:5)
好坏都不是,主要是风格问题。
在某些使用情况下,可能会有一个 非常 小的客观差异,但是没有什么值得考虑的。 (如果重复使用这些属性,将它们缓存到局部常量可能会使它们更快地查找。如果不使用,则将它们缓存到局部常量是不必要的步骤。但是,在99.999999999%的情况下,这仅仅是完全不会在现实世界中产生任何变化。做最明显的事情。)
旁注:如果需要,可以将两个销毁任务组合在一起:
const {view, zoomOutScreen, props: {navigation}} = this;
答案 1 :(得分:1)
这不是一个坏习惯,但是它具有更高的代码可读性,并避免了React中的反模式。它向用户提供了知识,哪些对象绑定到了此组件,还有哪些对象引用了全局对象。因此,最好不要破坏它。
答案 2 :(得分:1)
当面对带有长int mypipefd[2];
char child_cmd[CMD_LINE_SIZE];
// Create pipe file descriptors for parent and child
ret = _pipe(mypipefd, 256, O_BINARY);
if (ret == -1) {
error("Error creating pipe file descriptors");
}
// Create command line arguments for child process
snprintf(child_cmd, CMD_LINE_SIZE, "%d", mypipefd[1]);
// Create child process to handle request
if ( !CreateProcess(
"C:\\...\\Child_Process.exe", // No module name (use command line)
child_cmd, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
TRUE, // Set handle inheritance to TRUE (for pipe)
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed : %d\n", GetLastError());
exit(-1);
}
方法的组件时,很难猜测它是来自render()
,props
还是仅仅是组件方法。
同样,在IDE中使用Ctrl + Click导航需要2次单击。
由于解构只是语法上的糖(与箭头功能不同),因此没有功能方面的负面影响。都是关于代码风格和可读性的。