无法读取属性'长度'未定义 - 在“是”中使用“when”和数字

时间:2017-08-29 14:07:59

标签: javascript yup

我收到错误:TypeError: Cannot read property 'length' of undefined

例如,我有这个验证:

const agreementDurationAmount = Yup.number().when('agreementDuration', (agreementDuration) => {
  if(agreementDuration === 'Miesięczny') {
    return Yup.number().min(1, 'Czas trwania umowy: wprowadź liczbę miesięcy');
  }
  if(agreementDuration === 'Tygodniowy') {
    return Yup.number().min(1, 'Czas trwania umowy: wprowadź liczbę tygodni');
  }
  return Yup.number();
});

这样的对象:

{
  agreementDuration: 'Nieokreślony',
  agreementDurationAmount: 0,
}

更大的错误消息:

formik.es6.js:377 Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
    at yupToFormErrors (formik.es6.js:377)
    at formik.es6.js:167
    at <anonymous>
  | yupToFormErrors | @ | formik.es6.js:377
-- | -- | -- | --
  | (anonymous) | @ | formik.es6.js:167
  | Promise rejected (async) |   |  
  | Formik._this.runValidationSchema | @ | formik.es6.js:161
  | Formik._this.submitForm | @ | formik.es6.js:262
  | Formik._this.handleSubmit | @ | formik.es6.js:234
  | ReactErrorUtils.invokeGuardedCallback | @ | ReactErrorUtils.js:69
  | executeDispatch | @ | EventPluginUtils.js:85
  | executeDispatchesInOrder | @ | EventPluginUtils.js:108
  | executeDispatchesAndRelease | @ | EventPluginHub.js:43
  | executeDispatchesAndReleaseTopLevel | @ | EventPluginHub.js:54
  | forEachAccumulated | @ | forEachAccumulated.js:24
  | processEventQueue | @ | EventPluginHub.js:254
  | runEventQueueInBatch | @ | ReactEventEmitterMixin.js:17
  | handleTopLevel | @ | ReactEventEmitterMixin.js:27
  | handleTopLevelImpl | @ | ReactEventListener.js:72
  | batchedUpdates | @ | ReactDefaultBatchingStrategy.js:60
  | batchedUpdates | @ | ReactUpdates.js:97
  | dispatchEvent | @ | ReactEventListener.js:147
  | componentDidUpdate | @ | App.jsx:17
  | measureLifeCyclePerf | @ | ReactCompositeComponent.js:75
  | (anonymous) | @ | ReactCompositeComponent.js:728
  | notifyAll | @ | CallbackQueue.js:76
  | close | @ | ReactReconcileTransaction.js:80
  | closeAll | @ | Transaction.js:209
  | perform | @ | Transaction.js:156
  | perform | @ | Transaction.js:143
  | perform | @ | ReactUpdates.js:89
  | flushBatchedUpdates | @ | ReactUpdates.js:172
  | closeAll | @ | Transaction.js:209
  | perform | @ | Transaction.js:156
  | batchedUpdates | @ | ReactDefaultBatchingStrategy.js:62
  | enqueueUpdate | @ | ReactUpdates.js:200
  | enqueueUpdate | @ | ReactUpdateQueue.js:24
  | enqueueSetState | @ | ReactUpdateQueue.js:218
  | ReactComponent.setState | @ | ReactBaseClasses.js:64
  | onStateChange | @ | connectAdvanced.js:205
  | dispatch | @ | createStore.js:173
  | dispatch | @ | VM33975:2
  | (anonymous) | @ | index.js:14
  | dispatch | @ | applyMiddleware.js:35
  | saveData.then.data | @ | index.js:129
  | Promise resolved (async) |   |  
  | (anonymous) | @ | index.js:102
  | (anonymous) | @ | index.js:11
  | dispatch | @ | VM33975:2
  | initStore.then.initialState | @ | getStore.js:109
  | Promise resolved (async) |   |  
  | getStore | @ | getStore.js:99
  | __webpack_exports__.a | @ | index.jsx:13
  | map../af | @ | main.js:39
  | __webpack_require__ | @ | bootstrap 4fef064…:19
  | Object.defineProperty.value | @ | bundle.js?1504015496728=123:55068
  | __webpack_require__ | @ | bootstrap 4fef064…:19
  | (anonymous) | @ | bootstrap 4fef064…:62
  | (anonymous) | @ | bootstrap 4fef064…:62

0 个答案:

没有答案