Redux: حالة الخريطة للدعائم باستخدام الدعامة؟

تم إنشاؤها على ٦ سبتمبر ٢٠١٥  ·  4تعليقات  ·  مصدر: reduxjs/redux

مرحبا،

أنا أستخدم redux مع التفاعل الأصلي وهو أمر رائع حتى الآن!
لدي في تطبيقي ملفات تعريف مستخدمين ، ويبدو حالتي كما يلي:

{
  users: {
    "1": {id: "1", name: "Ran"},
    "2": {id: "2", name: "Dan"}
  }
}

لدي الآن مكون <Profile> مستخدمًا واحدًا

class Profile extends React.Component {
  componentDidMount() {
    const { dispatch, userId } = this.props;
    dispatch(loadUser(userId));
  }
  render() {
    console.log(this.props.user.name);
  }
}

عندما يتصاعد المكونة I بإرسال loadUser عمل مع userId مرت كما دعامة.
يؤدي هذا إلى تقديم طلب إلى واجهة برمجة التطبيقات ، وإضافة استجابة المستخدم إلى حالتي users .

الآن ، أريد أن يتلقى مكون ملف التعريف الخاص بي المستخدم لتقديمه كعنصر أساسي.
لذلك أريد أن أفعل شيئًا مثل:

function mapStateToProps(state) {
  return {
    user: state.users[props.userId]
  };
}
module.exports = connect(mapStateToProps)(Profile);

من الواضح أنه لا يمكن أن يعمل لأنني لا أستطيع الوصول إلى الدعائم.
لا يمكنني استخدام حالة مثل selectedProfile للتصفية لأنني أقوم بعرض ملفات تعريف متعددة في حزمة التنقل الخاصة بي ، كل منها له معرف مستخدم مختلف ، إذا كنت أستخدم حالة الملف الشخصي المحددة العامة ، فإنها تكسر زر الرجوع.

الحل الوحيد الذي وجدته هو إنشاء مكون ProfileContainer ، والذي سيقوم بتصفية الحالة حسب الخاصية الخاصة بها وتمرير المستخدم الفردي إلى Profile المكوّن.

class ProfileContainer extends React.Component {
  render() {
    let user = this.props.users[this.prop.userId];
    return <Profile user={user} />
  }
}

هل له معنى؟ أي شخص آخر واجه هذه المشكلة؟

شكر،
جرى.

question

التعليق الأكثر فائدة

مهلا،

هذه مشكلة رد فعل - إعادة ... ربما أفتقد شيئًا ما ، لكن يبدو الأمر بسيطًا جدًا بالنسبة لي ، استخدم وسيطة "ownProps" التي تم تمريرها إلى mapStateToProps ، لذلك سيبدو الكود أعلاه:

function mapStateToProps(state, ownProps) {
  return {
    user: state.users[ownProps.userId]
  };
}
module.exports = connect(mapStateToProps)(Profile);

لديك حق الوصول إلى دعائم المكون. كيف يبدو ذلك؟ راجع https://github.com/rackt/react-redux#connectmapstatetoprops -mapdispatchtoprops-mergeprops-options لمزيد من التفاصيل أو https://github.com/rackt/redux/blob/master/examples/real-world/containers/ UserPage.js لمثال العالم الحقيقي ...

ال 4 كومينتر

مهلا،

هذه مشكلة رد فعل - إعادة ... ربما أفتقد شيئًا ما ، لكن يبدو الأمر بسيطًا جدًا بالنسبة لي ، استخدم وسيطة "ownProps" التي تم تمريرها إلى mapStateToProps ، لذلك سيبدو الكود أعلاه:

function mapStateToProps(state, ownProps) {
  return {
    user: state.users[ownProps.userId]
  };
}
module.exports = connect(mapStateToProps)(Profile);

لديك حق الوصول إلى دعائم المكون. كيف يبدو ذلك؟ راجع https://github.com/rackt/react-redux#connectmapstatetoprops -mapdispatchtoprops-mergeprops-options لمزيد من التفاصيل أو https://github.com/rackt/redux/blob/master/examples/real-world/containers/ UserPage.js لمثال العالم الحقيقي ...

لا أصدق أنني فاتني ذلك! شكرا @ alanrubin

:رضى وقبول:

الرجاء تقديم مثل هذه المشكلات في رد الفعل والإعادة في المستقبل.
لا علاقة له بهذا المستودع.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات