Redux - Bir işlevinden eylem çağrısı

oy
0

Bir işlevinden redoks eylemi ulaşmaya çalışıyorum. Zaten deposuna bağlı den işlevini arıyorum bileşeni. Harekete gibi geçerse Ancak, çalışmaz:

function myFunc(action) {
    action()
}

bir parametre üzerinden bir eylem geçmesi için bir yol var mı? Teşekkür ederim.

Oluştur 20/10/2018 saat 14:14
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
2

kullanarak bindActionCreatorredux gelen bileşeninden eylemleri gönderme kolay yoludur.

import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';

class ReduxConnectedComponent extends React.Component {
 mainFunction = () =>{
  this.props.someAction(); // this dispatches your action.
  }
 render(){}
}
const mapStateToProps = store => ({
  test: store.modules.someObject,
});

const mapDispatchToProps = dispatch => bindActionCreators({
  someAction: yourActionCreatorFunction,
}, dispatch);
export default connect(maStateToProps,mapDispatchToProps)(ReduxConnectedComponent)

Burada mapDispatchToProps içinde, kullandığımız bindActionCreatoriçin bir işlev bağlamak redux store dispatch. Eğer çağırdığınız böylece. aslında mağaza eylem gönderir

Cevap 20/10/2018 saat 14:23
kaynak kullanıcı

oy
1

redüktör yakalamak ve mağaza güncelleştirmek için eylem sevk bağlı olmalıdır.

Bunu yapmak için bir şekilde işleminizi içermelidir mapDispatchToPropsRedux en connect fonksiyonu için arg. Bu şuna benzer:

connect(null, { actionCreator })(MyComponent)

bileşenin içinden bir fonksiyona bağlı aksiyon yaratıcısı geçmek için, sahne ile erişmek: myFunc(this.props.actionCreator)

Hepsini bir araya koy:

import myFunc ...
class MyComponent extends React.Component {

  onChange() {
    myFunc(this.props.actionCreator)
  }

  render() { ... }
}

export connect(null, { actionCreator })(MyComponent)

Şimdi ne zaman myFuncyürütür actionCreator()düzgün eylem redüktör ile yakalanmak sevk edecektir.

Cevap 20/10/2018 saat 14:29
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more