Skip to content

Documentation on Slider is Weak Compared to Other Components (and Other Slider Issues) #22

Open
@machineghost

Description

@machineghost

Most of the other components are straightforward, and while their documentation is minimal, it's enough. But Slider ... what the heck is the connect prop? It's in literally every example, but you never once even suggest what it's supposed to do ... it just says Array[Bool]Bool.

How does pips work? You've got two examples but never even describe how the prop is supposed to work. I wanted something extremely basic: a slider with only three values. That should have been trivial, but now I'm wondering if I should switch UI libraries (or at the very least go look for a secondary one with a good slider), because I can't even tell whether it's possible or not with this slider, let alone how to actually do it.

The component is full of props, but none are documented :(

Also, when I try to use the useState hook (the official Facebook-recommended way to do state in React in 2019) I get:

index.js:1375 Warning: State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().

For code like:

   const [value, setter] = useState([0]);
   return  <Slider
      connect
      onSlide={setter}
      pips={{ mode: "steps", stepped: true, density: 1 }}
      start={value} />

I believe onSlide passses some second argument, which annoys React. This makes everyone have to do:

      onSlide={value => setter(value)}

... except, for some odd reason the component doesn't parseFloat the value (which makes no sense since start is clearly meant to be an array of numbers), so what you actually have to do is:

      onSlide={([value]) => setter([parseFloat(value)])}

... and that only works for single values: it gets uglier if you have multiple (although honestly I still don't "grok" how a two-dimensional slider can even have multiple values ... again with the poor documentation.)

Clearly it'd be simpler if the library let you do:

      onSlide={setter}

or:

      stateSetter={setter}

:)

Also, have you noticed that the slider handle is virtually invisible until you focus it? If the user's monitor doesn't have perfectly calibrated brightness/contrast, they might not even see the handle at all, and not recognize the component as a slider UI.

Please consider making this element more visible: it probably looks perfect on your well-tuned display, but something about the design just fails without perfect contrast, and web developers can't guarantee their users' monitor settings.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions