在React中解压缩“ this”是否是不好的做法?

时间:2018-09-02 15:49:38

标签: javascript reactjs react-native ecmascript-6

我总是打开 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>
        );
    }
}

3 个答案:

答案 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次单击。

由于解构只是语法上的糖(与箭头功能不同),因此没有功能方面的负面影响。都是关于代码风格和可读性的。