提交 bda8cddc authored 作者: vipcxj's avatar vipcxj

project rename and fix

上级 0c6bcd61
[android]
target = Google Inc.:Google APIs:25
[maven_repositories]
central = https://repo1.maven.org/maven2
......@@ -12,7 +12,9 @@
; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.js
; Ignore polyfills
.*/Libraries/polyfills/.*
; Additional create-react-native-app ignores
......@@ -34,8 +36,7 @@
[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow
flow/
node_modules/react-native/flow/
[lints]
......@@ -52,14 +53,16 @@ module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|we
suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState
suppress_type=$FixMe
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
unsafe.enable_getters_and_setters=true
[version]
^0.57.3
^0.53.0
*.pbxproj -text
node_modules/
<<<<<<< ours
.expo/
ios/build/
android/.gradle
android/.idea
android/build/
android/app/build/
npm-debug.*
`
\ No newline at end of file
`
=======
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
>>>>>>> theirs
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
{}
{}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="AwesomeProject" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
......@@ -45,12 +45,12 @@ android_library(
android_build_config(
name = "build_config",
package = "com.awesomeproject",
package = "com.bolanmanagerapp",
)
android_resource(
name = "res",
package = "com.awesomeproject",
package = "com.bolanmanagerapp",
res = "src/main/res",
)
......
......@@ -79,10 +79,8 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/multi-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
......@@ -92,7 +90,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
......
......@@ -72,6 +72,10 @@ import com.android.build.OutputFile
* ]
*/
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
......@@ -94,7 +98,7 @@ android {
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.awesomeproject"
applicationId "com.bolanmanagerapp"
minSdkVersion 16
targetSdkVersion 25
multiDexEnabled true
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.awesomeproject"
package="com.bolanmanagerapp"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-sdk
android:minSdkVersion="16"
......
......@@ -10,7 +10,7 @@ import android.os.ServiceManager;
import android.util.Base64;
import android.util.Log;
import com.awesomeproject.R;
import com.bolanmanagerapp.R;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
......
package com.awesomeproject;
package com.bolanmanagerapp;
import com.facebook.react.ReactActivity;
......@@ -10,6 +10,6 @@ public class MainActivity extends ReactActivity {
*/
@Override
protected String getMainComponentName() {
return "Proland Starter";
return "bolanManagerApp";
}
}
package com.awesomeproject;
package com.bolanmanagerapp;
import android.app.Application;
import android.content.Context;
......@@ -24,20 +24,25 @@ public class MainApplication extends Application implements ReactApplication {
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new IDCardReactPackage()
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new IDCardReactPackage()
);
}
};
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
protected String getJSMainModuleName() {
return "index";
}
};
@Override
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
......
<resources>
<string name="app_name">React Native Demo</string>
<string name="app_name">bolanManagerApp</string>
</resources>
rootProject.name = 'AwesomeProject'
rootProject.name = 'bolanManagerApp'
include ':app'
{
"expo": {
"sdkVersion": "20.0.0"
},
"name": "Proland Starter",
"displayName": "React Native Demo"
"name": "bolanManagerApp",
"displayName": "bolanManagerApp"
}
\ No newline at end of file
import './src/index';
......@@ -29,9 +29,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOS.app"
BlueprintName = "AwesomeProject-tvOS"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOS.app"
BlueprintName = "bolanManagerApp-tvOS"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
......@@ -43,9 +43,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOSTests.xctest"
BlueprintName = "AwesomeProject-tvOSTests"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOSTests.xctest"
BlueprintName = "bolanManagerApp-tvOSTests"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
......@@ -61,9 +61,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOSTests.xctest"
BlueprintName = "AwesomeProject-tvOSTests"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOSTests.xctest"
BlueprintName = "bolanManagerApp-tvOSTests"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
......@@ -71,9 +71,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOS.app"
BlueprintName = "AwesomeProject-tvOS"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOS.app"
BlueprintName = "bolanManagerApp-tvOS"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
......@@ -94,9 +94,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOS.app"
BlueprintName = "AwesomeProject-tvOS"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOS.app"
BlueprintName = "bolanManagerApp-tvOS"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
......@@ -113,9 +113,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "AwesomeProject-tvOS.app"
BlueprintName = "AwesomeProject-tvOS"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp-tvOS.app"
BlueprintName = "bolanManagerApp-tvOS"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
......
......@@ -29,9 +29,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "AwesomeProject.app"
BlueprintName = "AwesomeProject"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp.app"
BlueprintName = "bolanManagerApp"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
......@@ -43,9 +43,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "AwesomeProjectTests.xctest"
BlueprintName = "AwesomeProjectTests"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerAppTests.xctest"
BlueprintName = "bolanManagerAppTests"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
......@@ -61,9 +61,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "AwesomeProjectTests.xctest"
BlueprintName = "AwesomeProjectTests"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerAppTests.xctest"
BlueprintName = "bolanManagerAppTests"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
......@@ -71,9 +71,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "AwesomeProject.app"
BlueprintName = "AwesomeProject"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp.app"
BlueprintName = "bolanManagerApp"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
......@@ -94,9 +94,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "AwesomeProject.app"
BlueprintName = "AwesomeProject"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp.app"
BlueprintName = "bolanManagerApp"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
......@@ -113,9 +113,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "AwesomeProject.app"
BlueprintName = "AwesomeProject"
ReferencedContainer = "container:AwesomeProject.xcodeproj">
BuildableName = "bolanManagerApp.app"
BlueprintName = "bolanManagerApp"
ReferencedContainer = "container:bolanManagerApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
......
......@@ -18,10 +18,10 @@
{
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"Proland Starter"
moduleName:@"bolanManagerApp"
initialProperties:nil
launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
......
......@@ -18,7 +18,7 @@
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="AwesomeProject" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="bolanManagerApp" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
......
......@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>React Native Demo</string>
<string>bolanManagerApp</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
......
......@@ -16,11 +16,11 @@
#define TIMEOUT_SECONDS 600
#define TEXT_TO_LOOK_FOR @"Welcome to React Native!"
@interface AwesomeProjectTests : XCTestCase
@interface bolanManagerAppTests : XCTestCase
@end
@implementation AwesomeProjectTests
@implementation bolanManagerAppTests
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
{
......
{
"name": "AwesomeProject",
"name": "bolanManagerApp",
"version": "0.1.0",
"private": true,
"devDependencies": {
......@@ -7,6 +7,7 @@
"babel-plugin-import": "^1.6.0",
"babel-preset-flow": "^6.23.0",
"babel-preset-react-native-stage-0": "^1.0.1",
"css-loader": "^0.28.7",
"eslint": "^4.8.0",
"eslint-config-airbnb": "^16.0.0",
"eslint-plugin-import": "^2.7.0",
......@@ -14,7 +15,10 @@
"eslint-plugin-react": "^7.4.0",
"flow-bin": "^0.57.3",
"jest-expo": "~20.0.0",
"react-test-renderer": "16.0.0-alpha.12"
"less": "^3.0.0-alpha.3",
"less-loader": "^4.0.5",
"react-test-renderer": "16.0.0-alpha.12",
"style-loader": "^0.19.0"
},
"scripts": {
"start": "react-native start",
......@@ -30,8 +34,8 @@
"dependencies": {
"antd-mobile": "^2.0.0",
"dva-core": "^1.1.0",
"react": "16.0.0-alpha.12",
"react-native": "^0.47.0",
"react": "^16.0.0-beta.5",
"react-native": "^0.49.3",
"react-navigation": "^1.0.0-beta.14",
"react-redux": "^5.0.6",
"redux-persist": "^4.10.1"
......
......@@ -22,4 +22,4 @@ persistStore(app.getStore(), {
blacklist: ['router'],
});
AppRegistry.registerComponent('Proland Starter', () => App);
AppRegistry.registerComponent('bolanManagerApp', () => App);
import router from './router';
import welcome from './welcome';
export default [
router,
welcome,
];
......@@ -6,7 +6,7 @@ export default {
effects: {
*login(ignored, { put, call }) {
yield put(NavigationActions.navigate({
routerName: 'Main',
routeName: 'Main',
}));
},
},
......
import { delay, NavigationActions } from '../utils'
import { routerReducer } from '../router'
import { delay, NavigationActions } from '../utils';
import { routerReducer } from '../router';
const actions = [
NavigationActions.BACK,
......@@ -8,7 +8,7 @@ const actions = [
NavigationActions.RESET,
NavigationActions.SET_PARAMS,
NavigationActions.URI,
]
];
export default {
namespace: 'router',
......@@ -17,26 +17,26 @@ export default {
},
reducers: {
apply(state, { payload: action }) {
return routerReducer(state, action)
return routerReducer(state, action);
},
},
effects: {
watch: [
function* watch({ take, call, put }) {
const loop = true
const loop = true;
while (loop) {
const payload = yield take(actions)
const payload = yield take(actions);
yield put({
type: 'apply',
payload,
})
});
// debounce, see https://github.com/react-community/react-navigation/issues/271
if (payload.type === 'Navigation/NAVIGATE') {
yield call(delay, 500)
yield call(delay, 500);
}
}
},
{ type: 'watcher' },
],
},
}
};
......@@ -3,16 +3,18 @@ import { NavigationActions } from 'react-navigation';
export default {
namespace: 'welcome',
state: {},
reducers: {},
effects: {
*init(ignored, { put, call }) {
const token = yield call(AsyncStorage.getItem, 'token');
if (token) {
if (!token) {
yield put(NavigationActions.navigate({
routerName: 'Login',
routeName: 'Login',
}));
} else {
yield put(NavigationActions.navigate({
routerName: 'Main',
routeName: 'Main',
}));
}
},
......
import React, { PureComponent } from 'react';
import { BackHandler, Animated, Easing } from 'react-native';
import {
StackNavigator,
addNavigationHelpers,
NavigationActions,
} from 'react-navigation';
import { StackNavigator, addNavigationHelpers, NavigationActions } from 'react-navigation';
import { connect } from 'react-redux';
import NavigatorService from './services/navigator';
import Welcome from './routes/welcome';
......@@ -76,7 +72,7 @@ class Router extends PureComponent {
backHandle = () => {
const currentScreen = getCurrentScreen(this.props.router);
if (currentScreen === 'Login') {
if (currentScreen === 'Login' || currentScreen === 'Welcome') {
return true;
}
if (currentScreen !== 'Home') {
......
import React, { Component } from 'react';
import { View } from 'react-native';
import { View, Text } from 'react-native';
import { Button } from 'antd-mobile';
import { NavigationActions } from 'react-navigation';
class ErrorScreen extends Component {
static navigationOptions = ({ navigation }) => ({
title: navigation.state.params.title
title: navigation.state.params.title,
});
render() {
......@@ -13,7 +13,9 @@ class ErrorScreen extends Component {
const { content } = state.params;
return (
<View>
{ content || '' }
<Text>
{ content || '' }
</Text>
<Button onClick={() => { navigate.dispatch(NavigationActions.back()); }} >确定</Button>
</View>
);
......
import React, { Component } from 'react';
import { View } from 'react-native';
import { View, Text } from 'react-native';
class Login extends Component {
render() {
return (
<View>
login
<Text>login</Text>
</View>
);
}
......
import React, { Component } from 'react';
import { View } from 'react-native';
import { View, Text } from 'react-native';
import { connect } from 'react-redux';
import {createAction} from '../utils/index';
import { createAction } from '../utils/index';
@connect(({ welcome }) => ({ welcome }))
class WelcomeScreen extends Component {
componentDidMount() {
const { dispatch } = this.props;
dispatch(createAction('init'));
dispatch(createAction('welcome/init')());
}
render() {
return (
<View>
welcome
<Text>welcome</Text>
</View>
);
}
}
export default WelcomeScreen;
\ No newline at end of file
export default WelcomeScreen;
export { NavigationActions } from 'react-navigation';
export const delay = time => new Promise(resolve => setTimeout(resolve, time));
export const createAction = type => payload => ({ type, payload });
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论