react-component / pagination

React Pagination
https://pagination-react-component.vercel.app/
MIT License
658 stars 327 forks source link

Could props simple support controlled component #467

Open zcma11 opened 1 year ago

zcma11 commented 1 year ago

when i use the pagination with props { simple: true, current: 1, onChange=() => {...}}

i met a bug, the current is be controlled by me, but the input is not.

the example is

const [current, setCurrent] = useState(1);
const onChange = (page) => {
  if (Math.random() > 0.5) {
    return
  } else {
    setCurrent(page)
  }
}

return (<Pagination
      simple
      current={current}
      onChange={onChange}
      total={50}
/>)

i expected when the current doesn't change, the input value should be 1. i received "the input value is 2", currentInputValue becomes 2, but current is still 1

i guess the problem is caused by this part.

// handleChange
if (!('current' in this.props)) {
        this.setState({
          current: newPage,
        });
      }
      if (newPage !== currentInputValue) {
        this.setState({
          currentInputValue: newPage,
        });
      }

should the design can be "when found current in props, the currentInputValue can not be changed"?

the following problem is how to due with the change event of input

thank you