我有一个帮助函数来替换字符串中的参数,参数提供-
type FormatStringParameter = string | number;
/**
* Temporary function to replace params in a string with the params provided
*
* @param input The string that has params i.e. {0}, {1}...
* @param params An array of strings representing the params
*/
export function formatString(input: string, ...params: FormatStringParameter[]): string {
if (params && params.length) {
for (let i = 0; i < params.length; ++i) {
input = input && input.replace(`{${i}}`, params[i] as string);
}
}
return input;
}
字符串变量包括:
const str = "Hello World! {0}"
const linkText = "Click Here!"
如何使用formatString
函数显示text = Hello World! Click Here!
,并将“Click Here!”作为链接(非纯文本)
我尝试了const outputText = formatString(str, linkText);
,但是由于formatString
函数只接受字符串作为输入,所以我得到了一个错误。
2条答案
按热度按时间ki0zmccv1#
这可不容易。
最困难的部分是将字符串
input
拆分为字符串和链接的列表,并可能确定单个param
应该是链接还是普通文本。formatString
需要导出DOM节点或DOM节点数组,而不是字符串。但是调用
formatString
的代码也需要能够处理DOM节点,所以只修复formatString
是不够的。创建DOM链接的快速(不完整)示例:
为完整起见:React也允许你直接将HTML代码写入元素(包括链接),但这是危险的,你不应该这样做。这就是为什么它被称为'dangerouslySetInnerHTML'。
nx7onnlm2#
两个观察结果**:**
params
数组中的元素是链接还是纯文本?link
URL给定?如果你把所有的元素都作为
params
数组中的一个链接,那么你可以简单地用HTML中的<a>
标签替换它们。