Skip to content
This repository was archived by the owner on Jul 20, 2020. It is now read-only.

Should the default for empty properties be null? #228

@AndrewRayCode

Description

@AndrewRayCode

I have a custom mesh component, something like:

class MyMesh extends Component {
    const { position, } = this.props;
    render() {
        return <mesh position={ position }>...</mesh>
    }
}

Most (but not all) of my meshes go through this class. I wanted to try forcing a manual render order, so I added the renderOrder prop and passed it down:

class MyMesh extends Component {
    const { position, renderOrder, } = this.props;
    render() {
        return <mesh position={ position } renderOrder={ renderOrder }>...</mesh>
    }
}

I started getting some strange flickering in my scene, and tracked it down to an undefined behavior in threejs.

Here's how three.js sorts by renderOrder: https://github.com/mrdoob/three.js/blob/dev/src/renderers/webgl/WebGLRenderLists.js#L7

Since three doesn't check for truthiness, it will sort only on equality difference. Normally, a mesh's render order is undefined. By simply adding the renderOrder={...} prop to my <mesh>, now anything using my component, even if doesn't pass renderOrder, will get null instead of the "default" undefined, which means my scene objects start sorting unexpectedly.

Should the default property be undefined, not null ? https://github.com/toxicFork/react-three-renderer/blob/master/src/lib/descriptors/THREEElementDescriptor.js#L40

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions