简体   繁体   English

在React中使用PropTypes将字符串值作为对象传递给Redux组件

[英]Pass string value as object to Redux component with PropTypes in React

A component using Redux example from React Final Form was created in index.js . index.js中创建了一个使用来自React Final Form的 Redux示例的组件。

<FormStateFromRedux valueName="valueString" form="counter" />

It is using redux to track values, using prop-types it should receive object name to return exact object value: 它使用redux来跟踪值,使用prop-types它应该接收对象名称以返回确切的对象值:

const FormStateFromRedux = ({ state, valueName }) => (
  <p>{state.values.valueName}</p>
)

export default connect((state, ownProps) => ({
  state: getFormState(state, ownProps.form)
}))(FormStateFromRedux)

 FormStateFromRedux.propTypes = {
  valueName: PropTypes.objectOf(PropTypes.string)
};

It is possible to return value when object path is set manually, here I want to make reusable component to return values using PropTypes but don't know what kind of type to choose. 手动设置对象路径时可以返回值,这里我想使可重用组件使用PropTypes返回值,但不知道选择哪种类型。 Is it possible to pass value as string? 是否可以将值作为字符串传递? May someone know what should be correct approach in this case? 可能有人知道这种情况下正确的方法是什么?

UPDATE UPDATE

It is possible to get string value inside object using [] 可以使用[]获取对象内部的字符串值

const FormStateFromRedux = ({ state, valueName }) => ( <p>{state.values[valueName]}</p> )

You should avoid passing whole form state to component. 您应该避免将整个表单状态传递给组件。 Component should have only necessary props. 组件应仅具有必要的道具。

const FormStateFromRedux = ({ valueName }) => ( <p>{valueName}</p> );

export default connect((state, props) => {
  const formState = getFormState(state, props.form);
  const { value : { valueName } } = formState;
  return { valueName };
})(FormStateFromRedux);

FormStateFromRedux.propTypes = {
  valueName: PropTypes.string
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM