Реагировать навигация добавить кнопку сохранения - PullRequest
0 голосов
/ 17 сентября 2018

Я использую React Navigation для маршрутизации. Когда пользователь открывает для изменения Stock Item , я хочу добавить кнопку Save , которая получает все измененные переменные из redux state и запрашивает их в конечной точке API.

В настоящее время я могу добавить кнопку сохранения только в очень статичном смысле, например:

const Stack = createStackNavigator(
    {
        Home: {
            screen: Tabs,
            navigationOptions: {
                header: null,
            },
        },
        StockScreen: {
            screen: StockScreen,
            navigationOptions: {
                headerRight: (

                    <Button
                      onPress={() => {
                          alert('This is a button!');
                      }}
                      title="Save"
                      color="#fff"
                    />
                  ),
            },
        },
    },
    {
    }
);

И у меня есть вкладка навигатора:

let StockTabs = createMaterialTopTabNavigator(
    {
        General: {
            screen: GeneralStockTab,
        },
        Pricing:{
            screen: PricingTab,
        },
        Stock:{
            screen: StockTab
        },
        Other:{
            screen: OtherTab,
        },
    },
    {
    }
);

Теперь эта навигация с вкладками подключена к редуксу следующим образом:

const mapStateToProps = state => ({
    item: state.stockItem.item,
    itemLoading: state.stockItem.loading,
    itemError: state.stockItem.error,
  });

const mapDispatchToProps = (dispatch) => {
    return ({
        fetchStockItem: bindActionCreators(fetchStockItem, dispatch)
    })
}

  const mergeProps = (state, dispatch, ownProps) => {
    return ({
        ...ownProps,
        screenProps: {
          ...ownProps.screenProps,
          ...state,
          ...dispatch,
        }
    })
  }

export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(StockTabs);

Я хочу иметь возможность иметь динамическое логическое значение , позволяющее нажимать кнопку или нет, в зависимости от того, были ли изменены значения, и когда нажата кнопка сохранения, я хочу запустить избыточную функцию до обновить state и запрос API .

Вот как выглядит приложение на вкладке nav : enter image description here

1 Ответ

0 голосов
/ 17 сентября 2018

Если вы уже используете redux, вы можете создать подключенный компонент <Button/>.Логическое значение можно передать аналогичным образом, добавив его в редуктор и связав его с mapStateToProps, а затем с компонентом.

const Button = ({testDispatch}) => {
  return (
    <Button
      onPress={testDispatch}
      title="Save"
      color="#fff"
    />
  )

function mapDispatchToProps(dispatch) {
  return {
    testDispatch: () => dispatch(testDispatch())
  };
}

const ConnectedButton = connect(
   null,
   mapDispatchToProps,
 )(Button);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...