Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { createStore, combineReducers } from 'redux';
  4. import { Provider } from 'react-redux';
  5. import { reduxForm, Fields, FieldArray, reducer as formReducer } from 'redux-form';
  6.  
  7. const reducers = {
  8. form: formReducer
  9. };
  10.  
  11. const reducer = combineReducers(reducers);
  12.  
  13. const store = createStore(reducer);
  14.  
  15. const renderSharedComponent = (fields) => {
  16. console.log(fields);
  17. return (<div>Shared Component</div>);
  18. };
  19.  
  20. const renderHashes = ({ fields }) => (
  21. <div>
  22. {
  23. fields.map((field) => (
  24. <Fields
  25. key={ field }
  26. names={ [`${field}.value`, `${field}.valueIsRegex`] }
  27. component={ renderSharedComponent }
  28. />
  29. ))
  30. }
  31. </div>
  32. );
  33.  
  34. const ReactComponent = () => (
  35. <div>
  36. <FieldArray
  37. name="hashes"
  38. component={ renderHashes }
  39. />
  40. <Fields
  41. names={ ['value', 'valueIsRegex'] }
  42. component={ renderSharedComponent }
  43. />
  44. </div>
  45. );
  46.  
  47. const ReduxForm = reduxForm({
  48. form: 'default',
  49. initialValues: {
  50. hashes: [{}]
  51. }
  52. })(ReactComponent);
  53.  
  54. ReactDOM.render((
  55. <div>
  56. <Provider store={ store }>
  57. <ReduxForm />
  58. </Provider>
  59. </div>
  60. ), document.getElementById('content'));
  61.  
  62. {
  63. value: { input: {...}, meta: {...} },
  64. valueIsRegex: { input: {...}, meta: {...} },
  65. names: [ 'value' , 'valueIsRegex' ]
  66. }
  67.  
  68. {
  69. hashes: [
  70. {
  71. value: { input: {...}, meta: {...} },
  72. valueIsRegex: { input: {...}, meta: {...} }
  73. }
  74. ],
  75. names: [ 'hashes[0].value' , 'hashes[0].valueIsRegex' ]
  76. }
  77.  
  78. import structure from "redux-form/lib/structure/plain";
  79.  
  80. function RenderRow({ names, ...props }) {
  81. const fields = {};
  82. names.forEach(n => (fields[n] = structure.getIn(props, n)));
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement