2017-08-10 8 views
0

このライブラリの問題を修正したいと思います:react-form。詳細について 、これは私の現在のエラーです:ネストされたコンポーネントreact.cloneElement with react-form

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of CustomInput .

これは私がやろうとしているものです:

<CustomInput field="date" showErrors={false}> 
 
    <DatePickerForm /> 
 
</CustomInput>

これは私のCustomInputコンポーネントです:

import React, { Component } from 'react'; 
 
import FormInput from 'react-form'; 
 

 
class CustomInput extends Component { 
 
    render() { 
 
    const { showErrors, field, children } = this.props; 
 
    return (
 
     <FormInput showErrors={showErrors} field={field}> 
 
     {({ setValue }) => { 
 
      return (
 
      React.cloneElement(children, { setValueForm: setValue }) 
 
     ); 
 
     }} 
 
     </FormInput> 
 
    ); 
 
    } 
 
} 
 
export default CustomInput;

React.cloneElement(children、{setValueForm:setValue})はオブジェクトを返すようです。 しかし、 "FormInput"部分のないReact.cloneElementをレンダリングすれば、レンダリングは正常です。 FormInputの機能に問題があると思います。

どうすれば間違っていますか?

あなたはFormInput class

感謝を確認することができます。あなたは間違って読み込むよう

+1

とは対照的にhttps://www.npmjs.com/package/react-form#-forminput-

import { FormInput } from "react-form" 

をあなたは正確にあなたがそこに達成しようとしているのかを説明することはできますか? – Dekel

+0

@Dekel書くことで説明するのはとても複雑です^^。私の最終的なポイントは:私は(フォームを使用する)各コンポーネントを書くことを望まない、 " blablabla" ...私はちょうど方法が好きです。最初にもっと読みやすい。 第2に、FormInputの各子コンポーネント(この例ではdatepicker)では、現在のフォームの各フィールドにデフォルト値を設定する必要があります。だから、毎回、これを書いて、私はより読みやすいビッグフォームのコンポーネントを持っているようにしています。 –

答えて

2

はルックス:

import FormInput from "react-form" 
+1

うわー、右!私はとても愚かな気がします...何時間か後にそれが働いていない理由を見つける!!! –

+0

喜んで笑います。それが働いたら答えを受け入れる! –

+0

うん、いいよね、でも遅いです、明日の朝は新鮮な頭で試してみるつもりです^^、戻ってきました^^ –

関連する問題