【问题标题】:react-select error: str.replace is not a function errorreact-select 错误:str.replace 不是函数错误
【发布时间】:2019-09-21 21:03:00
【问题描述】:

我正在尝试在我的项目中实现 react-select。 我的代码在这里:https://gist.github.com/BikalNepal/9172b3161abfa545cc5748055c6584c6

正在使用 graphql 获取搜索数据并从后端 nodejs 服务器中继,当我在框中键入时,它会正确获取数据,但是当我单击数据时,出现以下错误:

Option selected: {value: "stark@gmail.com", label: "rickon"}// Selected data is okay
Error:
react-select.esm.js?acac:1224 Uncaught TypeError: str.replace is not a function
    at trimString (react-select.esm.js?acac:1224)
    at Object.eval [as filterOption] (react-select.esm.js?acac:1246)
    at Select.filterOption (react-select.esm.js?acac:3952)
    at toOption (react-select.esm.js?acac:4038)
    at options.reduce.render (react-select.esm.js?acac:4092)
    at Array.reduce (<anonymous>)
    at Select.buildMenuOptions (react-select.esm.js?acac:4071)
    at Select.componentWillReceiveProps (react-select.esm.js?acac:3575)
    at callComponentWillReceiveProps (react-dom.development.js?cada:11395)
    at updateClassInstance (react-dom.development.js?cada:11605)
trimString @ react-select.esm.js?acac:1224
(anonymous) @ react-select.esm.js?acac:1246
filterOption @ react-select.esm.js?acac:3952
toOption @ react-select.esm.js?acac:4038
options.reduce.render @ react-select.esm.js?acac:4092
buildMenuOptions @ react-select.esm.js?acac:4071
componentWillReceiveProps @ react-select.esm.js?acac:3575
callComponentWillReceiveProps @ react-dom.development.js?cada:11395
updateClassInstance @ react-dom.development.js?cada:11605
updateClassComponent @ react-dom.development.js?cada:14648
beginWork @ react-dom.development.js?cada:15598
performUnitOfWork @ react-dom.development.js?cada:19266
workLoop @ react-dom.development.js?cada:19306
callCallback @ react-dom.development.js?cada:149
invokeGuardedCallbackDev @ react-dom.development.js?cada:199
invokeGuardedCallback @ react-dom.development.js?cada:256
replayUnitOfWork @ react-dom.development.js?cada:18532
renderRoot @ react-dom.development.js?cada:19422
performWorkOnRoot @ react-dom.development.js?cada:20296
performWork @ react-dom.development.js?cada:20208
performSyncWork @ react-dom.development.js?cada:20182
interactiveUpdates$1 @ react-dom.development.js?cada:20449
interactiveUpdates @ react-dom.development.js?cada:2170
dispatchInteractiveEvent @ react-dom.development.js?cada:4882
react-dom.development.js?cada:17071 

The above error occurred in the <Select> component:
    in Select (created by StateManager)
    in StateManager (created by CustomerSearch)
    in div (created by FormGroup)
    in FormGroup (created by CustomerSearch)
    in div (created by Col)
    in Col (created by CustomerSearch)
    in div (created by CustomerSearch)
    in CustomerSearch (created by Relay(CustomerSearch))
    in Relay(CustomerSearch) (created by ReactRelayQueryRenderer)
    in ReactRelayQueryRenderer (created by CustomerSearchPage)
    in div (created by CustomerSearchPage)
    in div (created by CustomerSearchPage)
    in CustomerSearchPage (created by ProductPerformance)
    in div (created by Row)
    in Row (created by ProductPerformance)
    in div (created by Container)
    in Container (created by ProductPerformance)
    in div (created by ProductPerformance)
    in ProductPerformance (created by Relay(ProductPerformance))
    in Relay(ProductPerformance) (created by ReactRelayQueryRenderer)
    in ReactRelayQueryRenderer (created by ProductPerformancePage)
    in div (created by ProductPerformancePage)
    in div (created by ProductPerformancePage)
    in ProductPerformancePage (created by Route)
    in Route (created by RoutePage)
    in div (created by RoutePage)
    in Router (created by HashRouter)
    in HashRouter (created by RoutePage)
    in RoutePage (created by App)
    in div (created by App)
    in App

Consider adding an error boundary to your tree to customize error handling behavior.

这可能是什么问题?

【问题讨论】:

  • 发生错误时,您检查过optionsvalue 状态吗?

标签: javascript reactjs react-select relayjs


【解决方案1】:

这里你引用了一个你从未声明过的event 常量。在您的代码下方已修复。请参阅道具onInputChangeonKeyDown,您必须在发送之前致电event

 <Select
   value={selectedOption}
   onChange={this.handleChange}
   options={this.state.options}
   // onKeyDown={event => this.handleRefetch(event)}
   onInputChange={event => this.handleInput(event)}
   inputValue={this.state.value}
 />

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 2022-11-17
    • 2019-04-21
    • 2017-08-16
    • 2018-02-06
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多