use `setProps` to avoid the use of `forceUpdate`