小编Red*_*ron的帖子

什么时候反应组件不是纯组件?

刚刚阅读:https : //reactjs.org/docs/react-api.html#reactpurecomponent

并试图找出什么时候函数不会返回纯的东西?

如果你给一个组件相同的道具/状态,那么它肯定会返回相同的结果吗?

javascript components reactjs

4
推荐指数
2
解决办法
529
查看次数

是否有可能在json中进行表达式/计算?

我使用精彩的json-server作为我的应用程序的后端,它对于访问自定义端点以检索一些数据非常有用.但如果它允许我进行计算/表达以便我也可以模仿后端行为,那将会是非常有用的.

以此数据结构为例

{
  "products": [
    {
      "name": "football",
      "id": "SPO-001",
      "category": "sport",
      "price": 40,
      "couponApplied": "false",
      "coupons": [
        "daw124qdw",
        "a1212cxn"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想用某种方式说些什么 "discountPrice": couponApplied ? price * couponDiscount

那只是我的伪编码.但我想做点什么我可以动态计算价格.或者当我提出请求时,它进行计算并返回计算数据(如后端应用程序)

我知道我可以提出请求,申请优惠券并提供新价格.甚至提出要求并更改价格.但这都是客户端完成的.有没有办法用json或json-server或任何其他解决方案来做到这一点.如果这有道理?

javascript json reactjs json-server

3
推荐指数
1
解决办法
994
查看次数

如何在打字稿中声明对象数组?

我想指定该函数将对象数组作为参数,但是我没有为该对象定义特定类型(某种“匿名类型”)

bagTotal = (products) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

bagTotal = (products: any[]) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

但这比我想要的要轻松一些:严格限制我的打字稿。

products 是一组外观相同的对象,就像所有对象都有名称,价格,描述一样。

我该怎么宣布呢?

我想做类似的事情

bagTotal = (products: [{name: string, price: number, description: string}]) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

但这是不对的。我该如何声明?

javascript typescript reactjs

3
推荐指数
3
解决办法
4481
查看次数

InvalidCharacterError:无法在“文档”上执行“ createElement”:提供的标记名称(“ /static/media/index.c6592bb6.ts”)不是有效名称

我有一个我想转换为使用打字稿的React应用

但出现以下错误: InvalidCharacterError: Failed to execute 'createElement' on 'Document': The tag name provided ('/static/media/index.c6592bb6.ts') is not a valid name.

这个错误甚至意味着什么?看起来好像不喜欢打字稿扩展名

任何想法如何解决?

typescript reactjs

3
推荐指数
4
解决办法
8189
查看次数

为什么我的 lambda 函数没有按预期工作?

我从 lambda 收到此错误: errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"Error: Unable to stringify response body

我正在尝试从 s3 中的上传触发我的 lambda(这部分正在工作),然后应该将一些内容发布到 dynamoDB

这是我的 lambda 完整版

var AWS = require('aws-sdk');
var S3 = require('aws-sdk/clients/s3');

const s3 = new AWS.S3()
var DynamoDB = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event) => {
    // TODO implement
    var bucket = event['Records'][0]['s3']['bucket']['name']
    var json_file_name = event['Records'][0]['s3']['object']['key']
    var params = {
      Bucket: bucket, 
      Key: json_file_name
     };

    const data = await s3.getObject(params).promise();

    const dataToDb = data.Body.toString('utf-8');

    console.log(dataToDb, 'TESTING ====')

    var dbparams = {
        TableName: "MY-TABLE-NAME",
        Item: …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services node.js aws-lambda

3
推荐指数
1
解决办法
3756
查看次数

您如何在样式组件中进行条件悬停?

我有一个基于某些道具的组件,我希望能够在悬停时更改背景。但基于其他道具,悬停应该什么都不做。这可能吗?

export const Container = styled.div`

    &:hover {
        background: ${({ shouldHover }) => shouldHover ? 'red' : '' };
    }
`
Run Code Online (Sandbox Code Playgroud)

但是这不起作用。任何建议如何做到这一点?

javascript reactjs styled-components

2
推荐指数
1
解决办法
8511
查看次数

您如何在react-testing-library中选中一个复选框?

我似乎找不到太多/任何有关我要实现的非常简单的文档的文档

我有一个下拉列表display: none。当我单击一个复选框时,它就是display: block 我要声明的所有内容,当我单击该复选框时,它会显示下拉列表

 expect(getByLabelText('Locale')).toHaveStyle(`
  display: none;
`)

getByLabelText('Locale').checked = true

expect(getByLabelText('Locale')).toHaveStyle(`
  display: block;
`)
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作,但测试在第二个Expect块上失败: display: none

断言的正确方法是什么?

当我单击复选框时,它将更新对象中的2个属性,true代码中的属性也是如此。当我手动传递这些属性时,测试仍然会失败,但首先会失败。

我觉得我需要做一些类似的事情 setProps

我现在已经尝试使用renderWithRedux它,但是它似乎无法正确触发我的动作创建者?

fireEvent.click(queryByTestId('LocaleCheckbox'))尝试和更新复选框的最好的事情?

javascript reactjs react-testing-library

2
推荐指数
2
解决办法
3344
查看次数

如何使用样式组件在 React Native 中设置 Text 子元素的样式?

所以如果我有这个

const MyView = styled.View`
    background: green;
    color: red;
`
Run Code Online (Sandbox Code Playgroud)

我有

<MyView>
  <Text> Hello </Text>
</MyView>
Run Code Online (Sandbox Code Playgroud)

文字不是红色的

所以我尝试了

const MyView = styled.View`
    background: green;
    & > Text { color: red; }
`
Run Code Online (Sandbox Code Playgroud)

你可以在 React 中使用普通的样式组件来做到这一点,但是文本仍然不是红色的

我该如何实现这一目标?

我知道我能做到

const StyledText = styled.Text`
    color: red;
`
Run Code Online (Sandbox Code Playgroud)

进而

    <MyView>
      <StyledText> Hello </StyledText>
    </MyView>
Run Code Online (Sandbox Code Playgroud)

但如果可以的话我想避免这种情况。是否可以访问 RN 中的 Text 子元素?

reactjs react-native styled-components

2
推荐指数
1
解决办法
7118
查看次数

如何用随机常数初始化 Elixir 模块?

我知道在 Elixir 中我可以使用随机变量启动一个模块,如下所示:

defmodule MyMod do
  @word = "test"
end
Run Code Online (Sandbox Code Playgroud)

但是是否可以使用类似的随机单词来启动此模块

defmodule MyMod do
  @words = ["test", "hello", "bye"]
  @word = @words[1]
end
Run Code Online (Sandbox Code Playgroud)

或者甚至比这更随机,并且有一个在初始化时被调用的函数,并且有一些更好的随机逻辑来确定起始词?

elixir

1
推荐指数
1
解决办法
210
查看次数

如何映射深层嵌套的对象数组?

const my_arr = [
   {id: 1, arr: [{subId: 1, value: 1}],
   {id: 2, arr: [{subId: 2, value: 2}],
   {id: 3, arr: [{subId: 3, value: 1}],
]
Run Code Online (Sandbox Code Playgroud)

如何映射该数组my_arr,然后映射arr以返回一个数组,如下所示:

[
  {subId: 1, value: 1},
  {subId: 3, value: 1},
]
Run Code Online (Sandbox Code Playgroud)

基本上仅过滤掉值为 1 的位置,然后仅返回该子对象

我试过做

my_arr.map((x) => x.map((y) => y.value === 1 ? y : null)) 
Run Code Online (Sandbox Code Playgroud)

javascript arrays filtering

0
推荐指数
1
解决办法
6309
查看次数