设置参数并使用 onClick() 调用函数

Set an argument and call a function with onClick()

我有一个表单,里面有一些字段,可以用语音识别来填充。我点击一个按钮播放音频,然后语音识别开始收听。

问题是由于某些原因 setBtnName('name') 没有设置值,我得到一个错误 __.mp3 doesn't exist.

我认为我调用函数 playName() 的方法 sets 一个参数并在其中调用另一个 function 是不正确的。也许有人知道另一种设置参数并直接使用 onClick() 调用函数的方法?

const [btnName, setBtnName] = useState('')

function playName(){
   setBtnName('name')
   playSound()
}

function playAge(){
   setBtnName('age')
   playSound()
    }

const audio = [`${btnName}.mp3`]

function playSound(){
//Play sound and start recognition 
}

useState(){
//use {btnName} as a value for json file to compare it with transcript
}
    return (
    <div>
      <p>Microphone: {listening ? 'on' : 'off'}</p>
      <button
        onClick={playName}
        type="button"> Name
      </button>
      <button
        onClick={playAge}
        type="button"> Age
      </button>
      <div>{name}</div>
      <div>{age}</div>
    </div>
  )

您在 playSound 中使用您的 buttonName 还是 audio?在这种情况下,它还不存在。 setBtnName 将在下次渲染时生效。

您需要 playSound('age') / playSound('name')useRefsetTimeout 或组合 useStateuseEffect。所以有几种方法。

只是其中一种看起来更像您想要实现的方式:

function playName(){
   setBtnName('name')
   playSound('name')
}

function playAge(){
   setBtnName('age')
   playSound('age')
    }



function playSound(name){
const audio = [`${name}.mp3`]
//Play sound and start recognition 
}