这是我的选择表格:
<form ref={skuSelectRef}>
<label htmlFor="size" />
<select
id="size"
value={selectedSKU}
onChange={() => changeSKU(size.options[size.selectedIndex].value)}
>
<option value="default">
{outOfStock ? 'OUT OF STOCK' : 'SELECT SIZE'}
</option>
{availableSizes.map((size, i) => (
<option key={i} value={size}>
{size}
</option>
))}
</select>
</form>
当我单击时,我希望打开上面的选择表单的按钮:
<div className="a2cbtn">
<button onClick={onAddToCartClick} id="a2cbtn">
<span>ADD TO CART</span>
</button>
</div>
以上两个组件都在我的 AddToCart 子组件中。这是父组件中按钮单击处理程序的片段,我试图在其中打开选择表单:
if (this.state.selectedSKU === 'default') {
this.skuSelectRef.current.click();
console.log(this.skuSelectRef);
console.log('clicked');
}
似乎正确创建了 ref,因为我正在{current: form}
登录到控制台并且单击正在工作,因为我也正在“单击”登录到控制台。但是选择表格没有打开!
起初我尝试在我的选择元素而不是表单中使用 ref,但是当我单击按钮时,它给了我一个错误,说函数 click 不存在所以我将 ref 移动到包含它的表单元素,现在我是没有得到那个错误,但它仍然没有打开。
我已经尝试过this.skuSelectRef.current.focus()
,this.skuSelectRef.current.select()
也无济于事。
有任何想法吗?