[英]How can I get reactstrap dropdown value to credit card component?
我的英語不好,我有信用卡部分。 當輸入更改獲取其他組件的值時。 但我希望從下拉列表中獲取到期月份和年份。 這是代碼,有人可以幫忙嗎?
codeandbox.io/s/purple-frost-lknxs
CreditCardForm
接收來自Payment
的onChange
回調,用於更新name
、 number
、 expiryMonth
和expiryYear
屬性。
這里的問題是expiryMonth
和expiryYear
的onChange
回調是從DropdownToggle's onChange
事件觸發的,而不是從DropdownItem -> div -> onClick
事件觸發的,這是您真正感興趣的事件:
<Dropdown isOpen={dropdownOpen} toggle={toggle}>
<DropdownToggle
caret
id="expiryMonth"
name="expiryMonth"
value={expiryMonth}
onChange={(e) => <-- It's being called HERE
onChange({ key: "expiryMonth", value: e.target.value })
}
>
{dropDownValue}
</DropdownToggle>
<DropdownMenu>
{select.map((item, index) => {
return (
<DropdownItem
key={`${item.id}--${index}`}
className={classNames({
active: dropDownValue === item.text
})}
>
<div onClick={changeValue}>{item.value}</div> <-- Should be called HERE
</DropdownItem>
);
})}
</DropdownMenu>
</Dropdown>
一個簡單的解決方案是擴展changeValue
和changeValue2
以使用正確的鍵調用onChange
回調:
function changeValue(e) {
setDropDownValue(e.currentTarget.textContent);
onChange({ key: "expiryMonth", e.currentTarget.textContent })
}
function changeValue2(e) {
setDropDownValue2(e.currentTarget.textContent);
onChange({ key: "expiryYear", e.currentTarget.textContent })
}
更改Payment
組件中的initialState
也是一個好主意,因此initialState
以與下拉列表相同的值開始:
const initialState = {
name: "",
number: "",
expiryMonth: "01",
expiryYear: "01",
cvv: ""
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.