【问题标题】:React JS change a value with a buttonReact JS 用一个按钮改变一个值
【发布时间】:2021-02-26 07:07:40
【问题描述】:

根据按下的按钮,我需要在模式中显示一些特殊的东西。 如您所见,我有 2 个 IonButton,按下时会修改 setShowModal ({isOpen: true}),即 isOpen 为 true。但我还必须通过按 IonButton 来修改 state.count 的值

我该怎么做?

正如您在事件中看到的那样 onClick = {() => setShowModal ({isOpen: true}), state.count = 0} 我尝试修改 state.count 的值,但出现代码错误

const App = () => {
  const [showModal, setShowModal] = useState({ isOpen: false });
  const [retVal, setRetVal] = useState(null);
  const state = {
    count: 0
  };


  return (
    <IonApp>
      <IonPage>
        <IonHeader>
          <IonToolbar>
            <IonButton
              onClick={() => setShowModal({ isOpen: true }), state.count=0}
              slot="end"
             
            >
              OPEN MODAL 1
            </IonButton>
            <IonButton
              onClick={() => setShowModal({ isOpen: true }), state.count=1}
              slot="end"
            >
              OPEN MODAL 2
            </IonButton>
            <IonTitle>MODAL TEST</IonTitle>
          </IonToolbar>
        </IonHeader>
        <IonContent className="ion-padding">
          <IonModal
            animated={true}
            isOpen={showModal.isOpen}
            onDidDismiss={() => setShowModal({ isOpen: false })}
          >
            <MyModal tipo={0}
              onClose={(value) => {
                setShowModal({ isOpen: false });
                value ? setRetVal(value) : setRetVal("User Cancelled");
              }}
            />
          </IonModal>
          <h2>Test Modal</h2>
          <li>Modal in seperate component</li>
          <li>Modal with List</li>
          <li>Modal That Scrolls</li>
          <li>Modal That returns Value When Clicked</li>
          <div>
            <h3>RETURNED VALUE</h3>
            <p>{retVal}</p>
          </div>
        </IonContent>
      </IonPage>
    </IonApp>
  );
};

export default App;

const MyModal = ({ onClose }, {any:tipo}) => {
  const data = Array(100).fill("TEST");
  if(tipo===0){
    return (
      <>
        <IonHeader>
          <IonToolbar>
            <IonButton onClick={() => onClose(null)} slot="end">
              CLOSE MODAL
            </IonButton>
          </IonToolbar>
        </IonHeader>
        <IonContent>
          <div id="contenedor-central">
            <strong>Usuario no registrado</strong>
          </div>
          <IonButton href="/registro">Registrarse</IonButton>
          <IonItem>Click List Item To Return Selected Value</IonItem>
          <IonList>
            {data.map((e, i) => {
              return <IonItem onClick={() => onClose(i)}>{e + i}</IonItem>;
            })}
          </IonList>
        </IonContent>
      </>
    );
  }

  if(tipo===1){
    return (
      <>
        <IonHeader>
          <IonToolbar>
            <IonButton onClick={() => onClose(null)} slot="end">
              CLOSE MODAL
            </IonButton>
          </IonToolbar>
        </IonHeader>
        <IonContent>
          <div id="contenedor-central">
            <strong>Tipo 2</strong>
          </div>
          <IonButton href="/registro">Registrarse</IonButton>
          <IonItem>Click List Item To Return Selected Value</IonItem>
          <IonList>
            {data.map((e, i) => {
              return <IonItem onClick={() => onClose(i)}>{e + i}</IonItem>;
            })}
          </IonList>
        </IonContent>
      </>
    );
  }
  
};

【问题讨论】:

    标签: reactjs button


    【解决方案1】:

    首先,为什么不使用count 的状态? 而 IonButton 的 onClick 可以是这样的:

    onClick={() => {
      setShowModal({ isOpen: true});
      setCount(0)
    }}
    

    【讨论】:

    • 但我必须定义 setCount 函数。正确的?我必须在哪里定义它以及如何定义它,比如一个函数?一个常量?
    • 是的,您需要像定义 show modal 或 retVal 一样定义它。const [count, setCount] = useState(0)
    • 提示,在 MyModal 参数未定义。为什么会这样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多