2017-11-06 22 views
0

반응 원시 projetc에서 작업 중이며 Redux를 잘 이해하지 못합니다.특정 배열 항목의 입력 값을 redux에 업데이트 할 수 없습니다.

lines[ 
    {"cant":2, "ref":"bar"}, {"cant":5, "ref":"foo"} 
] 

모든 라인 카드 정보입니다 : 나는 우리가 같이 그것을 객체의 배열을 가지고 help.:D 이 필요합니다. 이 카드는 값을 변경하기위한 입력 (캔트, 레퍼런스)을 가지고 있습니다. 전체 목적은 :

obj:{ 
    "a": '', 
    "b": '', 
    "lines": [ 
    {"cant":2, "ref":"bar}", 
    {"cant":5, "ref":"foo"} 
    ] 
} 

사용자는()를 호출 onChangeText 어떤 입력 값의 일부를 삽입 할 때. 한편 감속기의

<Input 
     placeholder="Cant" 
     value={this.props.newOrder.lines[index].cant} 
     onChangeText={(text)=> { 
      this.props.onChangeCant({"cant":text,"index":index}); 
     }} 
    /> 

(우리가 사용하는 반응 - 애드온 업데이트 일) :

case ON_CHANGE_CANT: 
     return update(state, { 
      lineas: { 
      [action.payload.index]: { 
       cant: {$set: action.payload.cant} 
      } 
      } 
     }); 

모든 것은 단지 하나의 문자를 업데이트만을 제외하고는 OK입니다. 예 : Cant : 1. 그러면 입력 포커스가 누락됩니다. 당신이 타자를 치면 : Cant : . 업데이트 만 입니다. 더 빨리 입력해도 상관 없습니다. 입력 한 첫 번째 문자 만 업데이트하십시오. 우리는 Redux의 동작이 문제라고 의심하지만 그 이유를 알지 못합니다.

우리는 디 바운스 (lodash)를 사용하려고하지만 우리는

어떤 생각

제발 성공하지?

정말 고마워요! 나는 그것이 내 설명을 이해하기를 바랍니다.

+3

'lines'은 배열이지만, 감속기에서는 객체 인 것처럼 취급합니다. –

+0

당신은 어떻게'_.debounce'를 사용하여 시도했는지 보여 줄 수 있습니까 – Aaqib

+0

지도로 입력을 만드십니까? 문제는 구성 요소의 다시 렌더링으로 인한 것일 수 있습니다. 소품이 변하기 때문에 재 렌더링을 시작하고'key' prop를 사용하지 않으면 입력의 초점을 잃을 수도 있습니다. – bennygenel

답변

0

Rockandbit는 그냥 react-addons-update 문서를 참조하십시오.

return update(state, { 
    lines: {$splice: [[action.payload.index, 1, action.payload.cant]]} 
}); 

을하지만 action.payload.cant 당신이 교체하고자하는 전체 개체 수있을 것이다 참고 :이 같은 것을보고 당신의 감속기 케이스를 원하는 것입니다. 그러니 그걸 통과 시키거나 미리 국가에서 얻으십시오.

+0

확인. 귀하의 솔루션을 시도하고 올바르게 업데이 트하지만 여전히 초점을 잃고 있어요. 하나의 문자를 입력하고 컴포넌트를 렌더링합니다 .Thanx – rockandbit