2016-12-11 4 views
1

그래서 내가 멀티 선택 사용하여 redux - 양식 onBlur 해킹 (?) 함께 잘 커튼 뒤에 일하고 있기 때문에 내가 그것을 제출하기 때문에 값 다중 선택 응답에서 선택 - redux - 양식을 사용하여 작동하지 않는다

에서하지만 나는 전혀 값을 결국 (내가 무엇을 선택 해달라고해도) 어떤 다중 선택 필드를 방문 후, 선택한 데이터 (아무것도 표시되지 않습니다하지만
image ))

const options = [ 
    { value: 'one', label: 'One' }, 
    { value: 'two', label: 'Two' } 
]; 

<Select 
      value="one" 
      options={options} 
      multi={true} 
      {...input} 
      onBlur={() => { 
       input.onBlur({...input.value}) 
      } 
      } 
     /> 

그래서 나는 redux 국가에있는 가치로 끝내고 그러나 나는 볼 수 없다 필드의 값. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?

답변

0

나는 react-select의 현대 버전을 사용하지만, 년 전에, 거기 몇 가지 문제를 배열로 값을 얻을 수 split()delimiter하여 문자열 값을 갖는 다음 join() 그들을 다시에 제공하지 않은 구성 요소. 이 같은

재료 :

if (multi) { 
    selectValue = value ? value.join(delimiter) : '' 
} else { 
    selectValue = value || null 
} 

나는 값이 돌아 오는 DevTools로를 사용하여, 돌아 오는에 정확히 검사하는 것이 좋습니다, 어떤 값 소품은 react-select에 전달지고 있습니다. 거기서 문제가 발견 될 거라 확신합니다.

+0

감사합니다 귀하의 회신 Erik. 나는이 질문을 게시 한 후 정확히 그것을했고,'input.onBlur ([... input.value]) '가 문제를 해결할 수 있도록 객체 대신 onBlur func에서 선택된 값의 배열을 전달해야한다는 것을 알게되었습니다. 그렇다면 반응 선택 이외의 다른 것을 사용하는 것이 좋습니다? 또한 redux-form을 사용하면 양식 입력 상태를 제어하기가 어렵습니다. 당신은 새로운 사람을 위해 그것을 추천합니까? – eersteam

+0

추신 : 나는 redux-form이 당신의 repo라는 것을 알고 있습니다. 그래서 당신이 편향되어 있지 않기를 바랍니다. (hehe) – eersteam

+0

Heh. 당신의 사고 방식에 더 잘 맞을지도 모르는 또 다른 lib가 있습니다. 아니요, 다중 선택을 위해 반응 선택하는 데 더 좋은 대안이 없습니다. –

8

다음은 어떻게 작동하는지 예입니다. 반응-선택 (1.0.0-rc.2), REDUX 형태 (5.3.4)

SelectInput.js

import React from 'react'; 
import Select from 'react-select'; 
import 'react-select/dist/react-select.css'; 

export default (props) => (
    <Select 
    {...props} 
    value={props.input.value} 
    onChange={(value) => props.input.onChange(value)} 
    onBlur={() => props.input.onBlur(props.input.value)} 
    options={props.options} 
    /> 
); 

MyAwesomeComponent.js에 대한

import React, {PureComponent} from 'react'; 
import SelectInput from './SelectInput.js'; 

class MyAwesomeComponent extends PureComponent { 
    render() { 
    const options = [ 
     {'label': 'Germany', 'value': 'DE'}, 
     {'label': 'Russian Federation', 'value': 'RU'}, 
     {'label': 'United States', 'value': 'US'} 
    ]; 
    return (
    <Field 
     name='countries' 
     options={options} 
     component={SelectInput} 
     multi 
    /> 
) 
}; 
+0

이 옵션은 멀티 및 비 멀티 선택 모두에서 잘 작동합니다. – turhanco

+0

우수 답변 날 구 해주세요! – klijakub