代码之家  ›  专栏  ›  技术社区  ›  ChrisM

重置React中控件的默认值

  •  2
  • ChrisM  · 技术社区  · 7 年前

    我有一个React应用程序,它由一个主“canvas”组件和一个工具栏组件组成,前者用于渲染第三方SVG,后者用于控制画布上的缩放和其他各种操作。用户可以使用下拉菜单更改画布的内容,当发生这种情况时,控件(缩放等)应重置为默认值。

    function zoomPcntControl(props) {
      const zoomLevels = [10, 25, 50, 75, 100, 125, 150, 200, 400, 800, 1600, 2400, 3200];
      const options = zoomLevels.map((level, key) => {
        return (
          <option key={key}> {level+"%"} </option>
        );
      });
      render() {
        return (
          <div>
            <select id="zoom-list" defaultValue="100%" autoComplete="off" onChange={props.handleZoomPcnt}>
              {options}
            </select>
          </div>
        )
      }
    }
    

    我要确保的是,每次重画画布组件时,控件的显示值都会重置为默认值100。除了求助于jQuery,我如何才能做到这一点?我知道那件事 key 技巧,但这似乎是一个粗糙的解决方案-我尝试了,视觉效果也不令人满意。

    默认值不能真正建模为state,因为它是应用程序的固定值。在任何情况下,变焦控制都是一个功能部件,没有自己的状态。其“状态”的唯一变化是用户交互的结果。

    1 回复  |  直到 7 年前
        1
  •  3
  •   vijayst    7 年前

    在React中有两种方法。

    使缩放组件成为受控组件。将缩放值作为道具传递,并使用value而不是defaultValue。

    <select value={props.value} onChange={props.handleZoomPct} />
    

    在缩放组件上使用ref。当需要重置defaultValue时,请使用ref重置该值。

    reset() {
      this.selectRef.current.value = '100%';
    }