如何获得信用卡组件的 reactstrap 下拉值?

Posted

技术标签:

【中文标题】如何获得信用卡组件的 reactstrap 下拉值?【英文标题】:How can I get reactstrap dropdown value to credit card component? 【发布时间】:2021-03-18 05:12:16 【问题描述】:

我的英语不好,我有信用卡部分。当输入更改获取其他组件的值时。但我希望从下拉列表中获取到期月份和年份。这是代码,有人可以帮忙吗?

codesandbox.io/s/purple-frost-lknxs

【问题讨论】:

@Turtlean 我觉得现在还可以codesandbox.io/s/purple-frost-lknxs 是的,现在开始工作了!让我们移除上面所有的 cmets 以减少噪音,因为它们不再需要了 【参考方案1】:

CreditCardForm 接收来自PaymentonChange 回调,用于更新namenumberexpiryMonthexpiryYear 属性。

这里的问题是expiryMonthexpiryYearonChange 回调是从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>

一个简单的解决方案是扩展changeValuechangeValue2 以使用正确的键调用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: ""

【讨论】:

以上是关于如何获得信用卡组件的 reactstrap 下拉值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 reactJS 中自定义 reactstrap 下拉菜单

如何在按钮单击时重置 reactstrap 中选择和输入组件的值?

ReactJS Reactstrap 输入下拉菜单未显示所选值

如何更改 reactstrap 下拉图标?

我的下拉样式不与reactstrap进口

Reactstrap 多级下拉祖先不关闭